将多行内容准确回显到文件中

将多行内容准确回显到文件中

因此,我有一个安装程序脚本,该脚本在某一时刻会将多行写入文件。这是另一个脚本。我希望它回显:

cat > $BASEDIR/start.sh << EndOfMessage
 cd $BASEDIR/
 VER=$(ls | grep --exclude-dir="Spigot" "spigot" | sort -nr)
 java -Xmx1024M -XX:MaxPermSize=128M -jar "$VER" -o true 
 sleep 5
 echo "Restarting..." && bash $BASEDIR/start.sh
EndOfMessage

但是,它用空格替换了“$VAR”,并且省略了一些其他行。有没有办法完全按照那里显示的那样回显所有内容?我更喜欢将它们全部放在同一个脚本中。

答案1

您可以转义此处文档中的所有美元符号,或者仅引用文档结束字符串(关闭文档内的所有扩展):

cat > $BASEDIR/start.sh << 'EndOfMessage'  # Quotes prevent expansions in the here-doc
 cd $BASEDIR/
 VER=$(ls | grep --exclude-dir="Spigot" "spigot" | sort -nr)
 java -Xmx1024M -XX:MaxPermSize=128M -jar "$VER" -o true 
 sleep 5
 echo "Restarting..." && bash $BASEDIR/start.sh
EndOfMessage

相关内容