我正在编写一个bash脚本,以非交互方式在Linux系统上启用休眠.为此,我需要插入一个shell变量,该变量在一行的特定行上包含斜杠,在该行的引号内.
b编辑文件的相关部分如下所示:
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_disTRIBUTOR="manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
我需要将其更改为:
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_disTRIBUTOR="manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3"
GRUB_CMDLINE_LINUX=""
添加的参数由shell变量提供.
我试过这个:
sed -i '\*^GRUB_CMDLINE_LINUX_DEFAULT* s*"$* '"$(grub_resume_boot_option)"'"*' /etc/default/grub
我的目标逻辑是:“查找以模式”GRUB_CMDLINE_LINUX_DEFAULT“开头的行,并用给定的模式替换最后一行.使用*作为分隔符来保留扩展变量中的斜杠.“
但是,如果该行末尾有任何空格,则该命令将失败.有没有办法让它不考虑行尾的空格?
此外,如果有更简单或可读的解决方案,我会非常感兴趣.
解决方法:
你可以做:
sed -i 's#^\(GRUB_CMDLINE_LINUX_DEFAULT="quiet\)"$#\1 resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3"#' /etc/default/grub
例:
$sed 's#^\(GRUB_CMDLINE_LINUX_DEFAULT="quiet\)"$#\1 resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3"#' <<<'GRUB_CMDLINE_LINUX_DEFAULT="quiet"'
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/disk/by-partuuid/c5a552c2-fe8f-423a-9037-c35bf090d9c3"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。