Bash 捕获信号后退出while循环

Bash 捕获信号后退出while循环,bash,while-loop,signals,Bash,While Loop,Signals,我正在编写一个bash文件来捕获另一个程序的信号: trap "echo Signal" SIGUSR1 while : do sleep 1 done COMMAND 1 COMMAND 2 COMMAND 3 ......... 我想在捕捉到信号后退出while循环,以便启动命令1、2、3等等 有什么建议吗? 谢谢你抽出时间 问候, Christian使用变量 finished=0 trap 'finished=1;echo Signal' SIGUS

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

trap "echo Signal" SIGUSR1 
while :         
do
        sleep 1 
done
COMMAND 1
COMMAND 2
COMMAND 3
.........
我想在捕捉到信号后退出while循环,以便启动命令1、2、3等等

有什么建议吗? 谢谢你抽出时间

问候,

Christian

使用变量

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

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

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

那么你能选择答案吗。谢谢