在变量中编写代码(使用特殊字符,如\或")

时间:2015-05-06 08:32:59

标签: bash sed escaping

我有一个脚本(init.sh),可以创建其他脚本。所以,在init.sh中,我想要包含其他脚本的变量。我使用read -d来做到这一点:

read -d '' script <<"EOF"
# Some code
sed -i "/PARALLEL_MAKE = \"-j 16\"/c\PARALLEL_MAKE = \"-j $threads\"" conf/local.conf
# Some code
EOF
echo "${script}" > script.sh

正如您所看到的,我使用\"命令。但是,在init.sh运行script.sh后,我有相应的行:

sed -i "/PARALLEL_MAKE = "-j 16"/cPARALLEL_MAKE = "-j $threads"" conf/local.conf

\还没有。

我可以尝试逃避特殊的角色,没有注意到很多\。但我的代码片段非常大,并且在其他情况下使用(使用简单的复制粘贴),所以我不想这样做。

我也可以将它们放在其他文件中,但我不能。我想按照描述做 - 如果可能的话。

1 个答案:

答案 0 :(得分:2)

您需要read -r来抑制反斜杠转义。