相关疑难解决方法(0)

如何避免heredoc扩展变量?

我正在尝试使用来自ENV的替换字符串创建脚本文件,但也希望防止一些​​转义

export PLACEHOLDER1="myPlaceholder1Value"
export PLACEHOLDER2="myPlaceholder2Value"
sudo /bin/su -c "cat << EOF > /etc/init.d/my-script
#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          my-script
# Required-Start:    \$remote_fs \$syslog
# Required-Stop:     \$remote_fs \$syslog
# Should-Start:      \$network \$time
# Should-Stop:       \$network \$time
# Default-Start:     2 3 4 5 
# Default-Stop:      0 1 6
# Short-Description: blabla
# Description:       bla bla desc
#
### END INIT INFO
#
myvariable_1=toto$PLACEHOLDER1
myvariable_2=titi$PLACEHOLDER2
myvariable_final=\"dynamicvar=\${myvariable_1},\${myvariable_2}\"
EOF
"
Run Code Online (Sandbox Code Playgroud)

由于myvariable_final没有被转义并被替换为init脚本依赖项中的一个($ remote_fs,$ syslog,$ network,$ time),因此结果不好.

#!/bin/bash
#
### BEGIN INIT …
Run Code Online (Sandbox Code Playgroud)

bash escaping heredoc substitution

60
推荐指数
2
解决办法
2万
查看次数

标签 统计

bash ×1

escaping ×1

heredoc ×1

substitution ×1