如何将包含 $var 的文本写入 bash 文件?

如何将包含 $var 的文本写入 bash 文件?

case $1 in我在编写bash 文件时遇到问题。我尝试过

cat <<EOT > /etc/init.d/startup.sh
#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
    start)
        bash /root/install.sh >> /root/installation_log.txt 2>&1
        ;;
    stop|restart|reload)
        ;;
esac
EOT

但问题是它将所有内容都写入了startup.shbut$1

case "$1" in  

变得

case "" in 

手术后。
该怎么办?

答案1

引用传递EOF<<运算符的终止符(以任何方式):

cat << 'EOT' > file
$var
EOT

或者

cat << \EOT
cat << EO\T
cat << "E"'O'T
cat << ""EOT

这就是记录和标准的方式以防止此处文档内发生任何类型的扩展。

答案2

将第一个改为EOT防止'EOT'变量膨胀

例如

cat <<'EOT' > /etc/init.d/startup.sh

相关内容