2011-09-25 138 views
6

作为系统构建脚本的一部分,我有一个脚本可以创建各种文件和配置。BASH脚本将变量传递给新脚本而不用替换

但是构建脚本的一部分会创建一个新脚本,其中包含我不想在生成脚本运行时解析的变量。代码片断例如

cat - > /etc/profile.d/mymotd.sh <<EOF 
hostname=`uname -n` 
echo -e "Hostname is $hostname" 
EOF 

我已经尝试了各种组合的“与”和(和[但我不能拿到剧本发送内容无取代的价值,并把替代品的新的脚本,而不是原文。

想法?

回答

9

最简单的就是逃避$

回声-e “主机名是\ $主机名”

23

最简单的方法是,假设您不希望在此处的文档中替换任何内容,请将EOF标记放在引号中,如下所示:

cat - > /etc/profile.d/mymotd.sh <<'EOF' 
hostname=`uname -n` 
echo -e "Hostname is $hostname" 
EOF 
+0

Perfecto。这工作。谢谢。 – interoperate

+1

应该接受答案,谢谢 – David

相关问题