在unix shell中包含“cat”命令Here Document

时间:2014-08-18 15:35:45

标签: bash shell unix heredoc

我正在尝试创建一个Here Document,它是一个包含cat命令的shell脚本。当然,遇到第二只猫时失败了。我也进行了很多替换,所以不能使用“ DOC ”逃脱技巧。

myfile="/tmp/myipaddr"
cat >/usr/bin/setIPaddress <<_DOC_

...     

OUT=`cat $myfile`

...
_DOC_

我想我可以回复一个文件,但这看起来很糟糕,而且我有很多引号和反对,我需要逃脱?!?还有其他想法吗?

1 个答案:

答案 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)
相关问题