Mou*_*inX 5 bash echo variable-substitution here-document
我在使用 bash 变量替换时遇到问题。这是我正在尝试做的一个愚蠢的例子。我需要从 bash 脚本输出一个新脚本。一行(参见echo
我的示例)混合了不应替换的变量和应替换的变量。
#!/bin/bash
REPLACE=`whoami`
cat << EOF > mynewscript.sh
read DONTREPLACE < /home/$REPLACE/localinput.txt
echo $DONTREPLACE > /home/$REPLACE/somefile.log
EOF
exit 0
Run Code Online (Sandbox Code Playgroud)
这不是一个真实的例子,但它确实说明了问题。假设我需要提前知道绝对路径,并且我希望在我的原始脚本中评估 $REPLACE。但我不希望在我的脚本中评估/替换 $DONTREPLACE。$DONTREPLACE
应该完全像新脚本一样输出。
因此,在制作 here 文档时引用“EOF”是行不通的。
我希望我能很好地解释这一点。
我不知道其他解决方案。我欣赏任何想法,但我更喜欢非常简单的想法/解决方案。它不必很优雅。
您应该使用\
来逃避$
前面的DONOTREPLACE
。请参阅下面的示例和输出
REPLACE=10
DONOTREPLACE=20
cat <<EOF
> echo $REPLACE
> echo \$DONOTREPLACE
> EOF
echo 10
echo $DONOTREPLACE
Run Code Online (Sandbox Code Playgroud)