在变量中编写代码(带有特殊字符,如 \ 或 ")
Write code (with special chars like \ or ") in variable
我有一个创建其他脚本的脚本 (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
\
不存在。
我可以尝试转义特殊字符,取消大量 \
。但是我的代码片段非常大,并且在其他情况下使用(通过简单的复制粘贴),所以我不想这样做。
我也可以将它们放在其他文件中,但我不能。如果可能的话,我想按照说明去做。
您需要 read -r
来禁止反斜杠转义。
我有一个创建其他脚本的脚本 (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
\
不存在。
我可以尝试转义特殊字符,取消大量 \
。但是我的代码片段非常大,并且在其他情况下使用(通过简单的复制粘贴),所以我不想这样做。
我也可以将它们放在其他文件中,但我不能。如果可能的话,我想按照说明去做。
您需要 read -r
来禁止反斜杠转义。