使用cat和EOF生成 shell 脚本时会自动解析变量的解决办法

Posted lavin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用cat和EOF生成 shell 脚本时会自动解析变量的解决办法相关的知识,希望对你有一定的参考价值。

之前使用以下的用法,执行时会自动执行``里的语句,同时会把$变量变为空。

cat <<- EOF >> /usr/local/reboot.sh
#!/bin/sh
DAY=`date +"%Y-%m-%d %H:%M"`
echo "$DAY reboot" >>  /usr/local/reboot.log
reboot
EOF

执行结果:

#!/bin/sh
DAY=2016-09-03 17:11
echo " reboot" >>  /usr/local/reboot.log
reboot

查到的解决办法:

cat > /usr/local/reboot.sh <<‘EOF‘
#!/bin/sh
DAY=`date +"%Y-%m-%d %H:%M"`
echo "$DAY reboot" >>  /usr/local/reboot.log
reboot
EOF

注意第一个EOF要带引号。这种写法还支持使用>>追加文本。

 

参考: http://www.linuxyw.com/linux/wenjianguanli/20130427/132.html

https://www.zhujimi.net/102.html

 

以上是关于使用cat和EOF生成 shell 脚本时会自动解析变量的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

Shell 脚本自动生成Crontab

shell cat EOF 变量自动解析问题

shell 脚本 EOF配合将cat将文本追加到指定文件

linux shell中的EOF

从shell脚本中的EOF说起

使用带有 EOF 的变量来生成文件