linux – 使用sed将内核参数添加到grub
发布时间:2020-12-13 22:59:10 所属栏目:Linux 来源:网络整理
导读:我正在编写一个bash脚本,以非交互方式在 Linux系统上启用休眠.为此,我需要插入一个shell变量,该变量在一行的特定行上包含斜杠,在该行的引号内. b编辑文件的相关部分如下所示: GRUB_DEFAULT=0GRUB_TIMEOUT=5GRUB_DISTRIBUTOR="Manjaro"GRUB_CMDLINE_LINUX_DE
我正在编写一个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" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |