1 sh脚本里trap失效
原脚本 trap1.sh
#!/bin/bash
while :
do
echo 123
sleep 3
done
finish() {
echo 321
exit
}
trap finish SIGINT
执行 sh trap1.sh
之后ctrl+c中止sh脚本,并没有打印321
2 改进脚本
查询网上资料,尝试后并没有解决
后来想了想,是不是与执行顺序有关
改进脚本 trap2.sh
#!/bin/bash
finish() {
echo 321
exit
}
trap finish SIGINT
while :
do
echo 123
sleep 3
done
执行sh trap2.sh
之后ctrl+c中止脚本,打印321
3 结论
sh脚本顺序执行,在while循环后设置的trap没有得到执行,故不会达到trap的效果(表现为sh脚本里trap指令失效)
将trap指令放到while循环前,就能保证trap得到正确执行