1

preseed 後のスクリプトの一部として、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"/

行末に挿入します。つまり、すべての既存のパラメーターの後。2 番目のバージョンでは、括弧や " をエスケープする必要がある場合があります。

以下で解決:

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