【发布时间】:2016-08-19 14:52:14
【问题描述】:
我正在编写一个 bash 脚本以在 linux 系统上以非交互方式启用休眠。为此,我需要在一段时间的特定行上插入一个包含斜杠的 shell 变量,在该行的引号内。
要编辑的文件的相关部分如下所示:
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”开头的行,并将最后一个“替换为给定的模式。使用 * 作为分隔符来保留扩展变量中的斜线。"
但是,如果行尾有空格,则命令会失败。有什么办法让它不考虑行尾的空格吗?
另外,如果有更简单或可读的解决方案,我会很感兴趣。
【问题讨论】:
-
如何确定
resume=/dev/disk/by-partuuid/c5a....的值?
标签: linux bash hibernate shell sed