关于bash:在sed命令中使用双引号和变量

Using double quotes and variables in sed command

本问题已经有最佳答案,请猛点这里访问。

我有两个bash变量,一个叫做GREP_ENTRY,它包含一个长字符串:

GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=d6c-2b-59-93-97-ea/lv_root rhgb quiet console=tty0

,另一个称为NEW_ENTRY,与GREP_ENTRY完全相同,但结尾处附加了fips = 1:

GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=d6c-2b-59-93-97-ea/lv_root rhgb quiet console=tty0 fips=1

我正在尝试使用sed在/ etc / default / grub中找到GREP_ENTRY并将其替换为NEW_ENTRY。当前,我正在尝试使用双引号,如下所示:

sed -i"s/$GREP_ENTRY/$NEW_ENTRY/g" /etc/default/grub

但是我得到了错误:

sed: -e expression #1, char 123: unknown option to `s'

我尝试使用其他双引号组合,但无济于事。有人可以解释在这种情况下如何正确使用sed吗?


两个变量都包含/。这混淆了sed的s命令。

s///切换到s|||