捕获信号后退出while循环

时间:2017-06-29 08:24:56

标签: bash while-loop signals

我正在写一个bash文件来捕获来自另一个程序的信号:

trap "echo Signal" SIGUSR1 
while :         
do
        sleep 1 
done
COMMAND 1
COMMAND 2
COMMAND 3
.........

我想在捕获信号后退出while循环,以便启动COMMAND 1,2,3等等。

有什么建议吗? 谢谢你的时间。

此致

基督教

2 个答案:

答案 0 :(得分:1)

使用变量

finished=0
trap 'finished=1;echo Signal' SIGUSR1
while ! ((finished))
do
    sleep 5
    echo sleeping
done
echo done

答案 1 :(得分:1)

将命令放入函数中,然后使用陷阱中的函数:

#!/bin/bash
trap 'trp' SIGUSR1
trp() {
        COMMAND 1
        COMMAND 2
        COMMAND 3
        ......... 
}
while :         
do
    sleep 1        
done