gdm*_*gdm 6 bash here-document variable
我在从主脚本创建脚本时遇到问题:
就这么简单:
cat pippo << EOF
LOGFILE=test.log
echo '#############################' >> $LOGFILE
EOF
Run Code Online (Sandbox Code Playgroud)
. 但是,当我检查 pippo 时,我得到:
LOGFILE=test.log
echo '#############################' >>
EOF
Run Code Online (Sandbox Code Playgroud)
为什么 $LOGFILE 已被替换?
hee*_*ayl 10
默认情况下,此处记录了 shell 扩展、精确参数扩展、命令替换和算术扩展的主题。所以在你的情况下发生了变量(参数)扩展——变量LOGFILE正在当前 shell 中扩展,并且由于该变量可能不存在,因此 null 作为扩展值被返回(并替换)。
要在此处的文档中逐字获取 shell 元字符,请在终止符字符串周围使用引号:
cat pippo <<'EOF' ## "EOF" would do too
LOGFILE=test.log
echo '#############################' >>"$LOGFILE"
EOF
Run Code Online (Sandbox Code Playgroud)
还将变量扩展引用为(大概)它引用文件名,以便在扩展后不会对其进行分词和路径名扩展。