1

作为预置脚本的一部分,我想禁用 ipv6。

/etc/default/grub我想改变这一行:

GRUB_CMDLINE_LINX=""

使其内容为:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

可以通过以下方式完成:

sed -i "s/GRUB_CMDLINE_LINUX=\"\"/GRUB_CMDLINE_LINUX=\"ipv6.disable=1\"/" /etc/default/grub

但是如果 GRUB_CMDLINE_LINUX 中已经有参数,则 sed 将不匹配。

如何在保留任何现有参数(如果有)的同时添加参数?

4

1 回答 1

3

问题是你正在摧毁整条生产线。尝试

s/GRUB_CMD_LINE_LINUX=\"/GRUB_CMD_LINE_LINUX=\"ipv6.disable=1XXX/

将您的作业插入到前面,并将 XXX 替换为用作分隔符的字符。也许 ;。或者

s/(GRUB_CMD_LINE_LINUX=[^\"]*)\"$/\1XXXipv6.disable=1"/

插入到行尾。即毕竟现有的参数。您可能必须在第二个版本中转义括号和/或 "。

解决了:

sed "s/GRUB_CMDLINE_LINUX=\"\(.*\)\"/GRUB_CMDLINE_LINUX=\"\1 ipv6.disable=1\"/" /etc/default/grub
于 2013-07-15T15:17:42.693 回答