BASH脚本将没有替换的变量传递给新脚本

时间:2011-09-25 23:49:30

标签: bash substitution

作为系统构建脚本的一部分,我有一个创建各种文件和配置的脚本。

然而,构建脚本的一部分会创建一个新脚本,其中包含在构建脚本运行时我不想解析的变量。代码段示例

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

我尝试过各种各样的'和'和(以及[但是我无法让脚本发送内容而不替换值并将替换放在新脚本中而不是原始文本。

想法?

2 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:9)

最简单的是逃避$

echo -e“主机名是\ $ hostname”