使用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

原文地址:https://www.cnblogs.com/lavin/p/11468694.html

时间: 2024-10-11 04:45:55

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

Linux基础之-利用shell脚本实现自动监控系统服务

目的:监控集群内nginx及nfs服务运行是否正常,如任一服务异常,则发送邮件通知用户 条件:1. 主机及子机IP地址,hostname已确定: 2. 主机与子机能够免密通讯,即基于密匙通讯(相关命令:ssh-keygen;ssh-copy-id -i web1); 需要的文件:    1. python邮件发送工具: 2. nfc.sh监控脚本,监控nginx及nfs服务状态,并调用mail发送工具通知用户: 3. nfc-install.sh监控部署脚本,运行在主机,为子机配置文件,执行命令

shell脚本中特定符合变量的含义

shell脚本中特定符合变量的含义: $#   传递到脚本的参数个数 $*    以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个 $$    脚本运行的当前进程PID号 $!     后台运行的最后一个进程的进程号 [email protected]   与$*相同,但是使用时用双引号,并将各个参数加双引号返回 $-     显示shell使用的当前选项,与set命令功能相同 $_    上一个命令的最后一个参数 $?     显示最后命令的退出状态,0表示执行成功

java 调用bash shell脚本阻塞的小问题的解决

java  调用bash shell脚本阻塞的小问题的解决 背景 使用java实现的web端,web端相应用户的界面操作,使用java调用bash实现的shell脚本进行实际的操作,操作完成返回执行结果给web 界面显示. 现象: Java 进程阻塞.使用ps命令可以看到被调用的shell 的执行进程状态为S 分析 Shell子进程的状态是S 睡眠状态,也就是该进程在等待某个条件满足,方能继续执行. Java程序在调用Runtime.getRuntime().exec(jyName)之后,lin

php生成的html 顶部有一空行的解决办法

php生成的html 顶部有一空行的解决办法,但是生成的编译文件,即1d7c7a527b6335cc7a623305ca940e1findex.tpl.php就没有空行 比较两个HTML源代码一模一样,实在是匪夷所思.... 所以上网查找,最终解决了这个棘手的问题,以下 是上网查找到的内容 --------------------------------------------------------------------------------------------- php生成的html

使用IDEA工具整合mybatis时使用@Resource和@Autowired自动注解bean时会显示红色问题的解决办法

使用IDEA工具整合mybatis时使用@Resource和@Autowired自动注解bean时会显示红色问题的解决办法 idea中springboot整合mybatis时,通过@Autowired注入的对象一直有下划线提示,但是项目能运行,虽然不影响运行,但是强迫症的程序员肯定看不下去. 如何去除呢?解决:改变@Autowired的检查级别即可.快捷键:Ctrl+Alt+s,进入idea设置界面,输入inspections检索,如下: 原文地址:https://www.cnblogs.com

shell脚本实现自动生成文件并更改其权限

在学习shell的时候,会不断的创建新文件,然后在新文件中的编写shell脚本学习.于是就有如下几个步骤: 1. 使用touch命令新建shell脚本 2. 编写shell脚本 3. 使用chmod更加shell脚本权限,使其具有可执行权限,然后执行 当多写几个脚本后,就发现这个过程很繁琐,而且新建的shell脚本是以数字升序进行创建的.为什么不写一个脚本来实现上述三个过程了.于是就开始了,结果花了好长一段时间才弄出来,真实惭愧,还是对shell不熟悉了. 先说说实现的思路: 1. 先得到目录下

Shell脚本基础、使用变量、条件测试及选择、列表式循环

Shell语言 脚本:可以运行,一个文件,可以实现某种功能(命令的堆积) [[email protected] ~]# vim /root/stu.sh echo hello worldcat /etc/redhat-releaseuname -rhostname ifconfig | head -2 [[email protected] ~]# chmod +x /root/stu.sh [[email protected] ~]# /root/stu.sh 案例1:书写一个创建用户的脚本 [

Shell脚本编程小技巧(1)-如何解决脚本中多行重定向结束符不用对齐到行首

1.what?问题需求是什么? 首先需求从何而来呢,主要是编写shell脚本,用cat 进行多行输入重定向的时候,结束符必须要对齐行首,格式不好看. 2.how?怎么解决这个问题? 首先百度,google搜索了下,结果就是说的多的就是shell多行重定向没有解决实际问题,可能是搜索的关键字不对.人工智能检索发现了一篇好文,人家写的比我好,大家自行浏览:[https://segmentfault.com/a/1190000008130200]主要是用了<<- 3.why?什么原理呢? 其实换个思

基本shell脚本的边界及变量

 shell脚本与变量  shell脚本的用途: 自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件  shell脚本编写格式: 第一行:shebang机制 用#加shell类型开头 后续可直接跟命令,用命令达到需要的效果即可 如需内容注释行首加#即可 例如: #/bin/bash #testcat /etc/passwd  shell脚本执行方法: bash /绝对路径 加入$PATH变量,给脚本文件添加执行权限,然后直接输入脚本文件名即可运行 cat /脚本路径 |