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

int*_*ate 6 bash substitution

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

但是,构建脚本的一部分会创建一个新脚本,其中包含在构建脚本运行时不希望解析的变量.代码段示例

cat - > /etc/profile.d/mymotd.sh <<EOF
hostname=`uname -n`
echo -e "Hostname is $hostname"
EOF
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种各样的'和'和(和[但是我不能让脚本发送内容而不替换值并将替换放在新脚本而不是原始文本中).

想法?

Jon*_*len 24

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

cat - > /etc/profile.d/mymotd.sh <<'EOF'
hostname=`uname -n`
echo -e "Hostname is $hostname"
EOF
Run Code Online (Sandbox Code Playgroud)


ott*_*t-- 9

最简单的是逃避$

echo -e"主机名是\ $ hostname"