2023年11月27日发(作者:)

2shell脚本格式

1)脚本开头(第⼀⾏)

规范的shell脚本的第⼀⾏会指出由哪个程序(解释器)来执⾏脚本中的内容,在Linux bash编程中⼀般为:

#!/bin/bash#!/bin/sh

其中开头的"#!"称为幻数,在执⾏bash脚本的时候,内核会根据"#!"后的解释器来确定由哪个程序来解释脚本中的内容。

2)格式

⼀般来说Linux 的系统脚本都是以#!/bin/bash开头,⽽其它软件的脚本开头就是要看开发者的习惯了,有的以#!/bin/bash开头,有的以

#!/bin/sh开头

3)注意事项

这⼀⾏必须在每个脚本的顶端第⼀⾏,要在255个字符以内。写在其它⾏了就是注释了。

CentOSRedHat默认的shell均是bash,因此,在写shell脚本的时候,在脚本的第⼀⾏也可以不加"#!/bin/bash",但如果当前系统默认的

shell不是bash时,那么就必须要写#!了。否则脚本的执⾏结果可能就不是想要的。所以最好的编程习惯,就是不管什么脚本都加上开头语

⾔标识“#/bin/bash”

4)脚本注释

shell脚本中,跟在"#"后⾯的内容表⽰注释。可以单独⾃成⼀⾏,也可跟在命令后,与命令在同⼀⾏。⼀定要有良好的写注释的习惯,因

为注释不仅⽅便他⼈,也⽅便⾃⼰,防⽌时间久了,忘记代码意思。

建议⽤标准写法:#!/bin/bash

5)后台执⾏脚本

1、防⽌脚本执⾏中断的⽅法

1sh &

2screen命令

3nohup &

2、后台执⾏脚本的控制

命令功能

sh &把脚本放到后台执⾏

ctrl + c停⽌执⾏当前脚本或任务

ctrl + z暂停执⾏当前脚本或任务

bg把当前脚本或任务放到后台执⾏

fg把当前脚本或任务拿到前台执⾏,如果有多个任务,可以fg加任务编号调出,如fg 1

jobs查看执⾏的脚本或任务

3、⽰例

1)⽰例1bg命令演⽰

a、场景

已执⾏sh ,但忘记加&,让脚本后台执⾏,发现时,该脚本已执⾏完⼀半任务,不想停⽌脚本,全部重新执⾏,希望把脚本直接

放到后台继续执⾏。

b、操作步骤

ictrl + Z:先暂停脚本的执⾏

iibg :将脚本放到后台继续执⾏

c、脚本演⽰

[root@CentOS8 test]# cat

#!/bin/bash

while true

do

uptime >> /var/log/

sleep 2

done

[root@CentOS8 test]# sh

^Z # 这是ctrl + z

[1]+ Stopped sh

[root@CentOS8 test]# bg

[1]+ sh & # 脚本已在后台继续执⾏

2)⽰例2fg命令演⽰

a、场景

后台已执⾏2脚本,希望把第2个脚本停⽌执⾏。

b、操作步骤

ijobs:查看当前正在执⾏的脚本或任务

iifg 2 :将第2个脚本放到前台执⾏

iiictrl + c :停⽌执⾏第2个脚本

c、脚本演⽰

[root@CentOS8 test]# sh &

[1] 15189

[root@CentOS8 test]# sh &

[2] 15201

[root@CentOS8 test]# jobs

[1]- Running sh &

[2]+ Running sh &

[root@CentOS8 test]# fg 2

sh

^C # 这是ctrl + c

[root@CentOS8 test]# jobs

[1]+ Running sh &