我正在尝试创建一个Here Document,它是一个包含cat命令的shell脚本。当然,遇到第二只猫时失败了。我也进行了很多替换,所以不能使用“ DOC ”逃脱技巧。
myfile="/tmp/myipaddr"
cat >/usr/bin/setIPaddress <<_DOC_
...
OUT=`cat $myfile`
...
_DOC_
我想我可以回复一个文件,但这看起来很糟糕,而且我有很多引号和反对,我需要逃脱?!?还有其他想法吗?
答案 0 :(得分:4)
假设文件包含
hello world
如上所述,您生成的脚本将包含行
OUT=hello world
因为命令替换是立即执行的。
至少,您需要引用此文档中的行
OUT="`cat $myfile`"
我怀疑你想要的是在生成的shell脚本中包含文字命令替换。为此,您需要引用反引号以防止它们被立即评估。更好的是,使用推荐的命令替换形式$(...)
,并引用美元符号。
cat >/usr/bin/setIPaddress <<_DOC_
...
OUT=\$(cat $myfile)
...
_DOC_
然后 /usr/bin/setIPaddress
将包含该行
OUT=$(cat /tmp/myipaddr)