在UNIX/Linux
中,经常需要写脚本执行自动化工作。执行脚本有多种方式,可以通过sh
,source
或者exec
。这些方式有一些区别,需要根据需求选择合适的方式。
sh方式
使用$ sh script.sh
执行脚本时,当前shell是父进程,生成一个子shell进程,在子shell中执行脚本。脚本执行完毕,退出子shell,回到当前shell。$ ./script.sh
与$ sh script.sh
等效。
例子
使用loop.sh
脚本反复打印当前进程号。
$ vi loop.sh
#!/bin/sh
while [ 1 = 1 ]; do
echo $$
sleep 1
done
查看父shell的进程号,是2454
。
$ echo $$
2454
在loop.sh
中,打印子shell进程号,是2700
。
$ sh loop.sh
2700
2700
使用htop
监控进程树。父进程2454
生成了子进程2700
,在子进程中执行脚本。