2、shell脚本格式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、shell脚本格式
(1)脚本开头(第⼀⾏)
规范的shell脚本的第⼀⾏会指出由哪个程序(解释器)来执⾏脚本中的内容,在Linux bash编程中⼀般为:
#!/bin/bash或#!/bin/sh
其中开头的"#!"称为幻数,在执⾏bash脚本的时候,内核会根据"#!"后的解释器来确定由哪个程序来解释脚本中的内容。
(2)格式
⼀般来说Linux 的系统脚本都是以#!/bin/bash开头,⽽其它软件的脚本开头就是要看开发者的习惯了,有的以#!/bin/bash开头,有的以
#!/bin/sh开头
(3)注意事项
这⼀⾏必须在每个脚本的顶端第⼀⾏,要在255个字符以内。
写在其它⾏了就是注释了。
CentOS和RedHat默认的shell均是bash,因此,在写shell脚本的时候,在脚本的第⼀⾏也可以不加"#!/bin/bash",但如果当前系统默认的shell不是bash时,那么就必须要写#!了。
否则脚本的执⾏结果可能就不是想要的。
所以最好的编程习惯,就是不管什么脚本都加上开头语⾔标识“#!/bin/bash”。
(4)脚本注释
在shell脚本中,跟在"#"后⾯的内容表⽰注释。
可以单独⾃成⼀⾏,也可跟在命令后,与命令在同⼀⾏。
⼀定要有良好的写注释的习惯,因为注释不仅⽅便他⼈,也⽅便⾃⼰,防⽌时间久了,忘记代码意思。
建议⽤标准写法:#!/bin/bash
(5)后台执⾏脚本
1、防⽌脚本执⾏中断的⽅法
(1)sh test.sh &
(2)screen命令
(3)nohup test.sh &
2、后台执⾏脚本的控制
命令功能
sh test.sh &把脚本test.sh放到后台执⾏
ctrl + c停⽌执⾏当前脚本或任务
ctrl + z暂停执⾏当前脚本或任务
bg把当前脚本或任务放到后台执⾏
fg把当前脚本或任务拿到前台执⾏,如果有多个任务,可以fg加任务编号调出,如fg 1
jobs查看执⾏的脚本或任务
3、⽰例
(1)⽰例1:bg命令演⽰
a、场景
已执⾏sh while01.sh,但忘记加&,让脚本后台执⾏,发现时,该脚本已执⾏完⼀半任务,不想停⽌脚本,全部重新执⾏,希望把脚本直接放到后台继续执⾏。
b、操作步骤
(i)ctrl + Z:先暂停脚本的执⾏
(ii)bg :将脚本放到后台继续执⾏
c、脚本演⽰
[root@CentOS8 test]# cat while01.sh
#!/bin/bash
while true
do
uptime >> /var/log/uptime.log
sleep 2
done
[root@CentOS8 test]# sh while01.sh
^Z # 这是ctrl + z
[1]+ Stopped sh while01.sh
[root@CentOS8 test]# bg
[1]+ sh while01.sh & # 脚本已在后台继续执⾏
(2)⽰例2:fg命令演⽰
a、场景
后台已执⾏2个while01.sh脚本,希望把第2个脚本停⽌执⾏。
b、操作步骤
(i)jobs:查看当前正在执⾏的脚本或任务
(ii)fg 2 :将第2个脚本放到前台执⾏
(iii)ctrl + c :停⽌执⾏第2个脚本
c、脚本演⽰
[root@CentOS8 test]# sh while01.sh &
[1] 15189
[root@CentOS8 test]# sh while01.sh &
[2] 15201
[root@CentOS8 test]# jobs
[1]- Running sh while01.sh &
[2]+ Running sh while01.sh &
[root@CentOS8 test]# fg 2
sh while01.sh
^C # 这是ctrl + c
[root@CentOS8 test]# jobs
[1]+ Running sh while01.sh &。