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 &
posted @ 2020-08-21 07:14  博小园  阅读(1112)  评论(0编辑  收藏  举报
回到顶部