高级 shell 编程全解析
1. 信号的发送与捕获
在某些情形下,我们不希望误按ctrl - C就终止当前进程。例如,当执行一个会对文件进行重大修改的复杂脚本时,如果脚本执行到一半就因误按ctrl - C而终止,文件空间可能会陷入混乱。这时候就需要用到信号捕获机制。
信号捕获机制允许 shell 在接收到信号时执行我们指定的操作,而非执行默认操作。用于拦截信号的命令是trap,其使用方式如下:
trap ’action’ signal其中,action可以为空或包含一个命令的字符串,signal是信号名称之一。
下面是一个示例脚本interrupts:
trap ’echo Ouch’ INT echo Beginning sleep 10 echo ten seconds sleep 10 echo twenty seconds sleep 10 echo thirty seconds and ended使用sh执行该脚本,在终端中多次按下ctrl - C,观察结果:
$ sh interrupts