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.sh
but$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