我对shell脚本非常陌生,需要在这方面的帮助。
我想运行一些具有无限循环的命令,我想在按下ctrl-c时终止循环,但在终止之前,我想要完成当前迭代(意味着循环中的所有语句都应该被执行。
infinite-loop (
command 1;
command 2;
command 3;
loop-ends因此,在ctrl-c中的任何执行点,都应该在终止循环之前执行所有3个命令。如果没有按下ctrl-c,循环应该会继续执行。
有什么建议吗?
发布于 2014-07-19 16:07:01
您可以使用trap来捕获信号。(已测试)
#!/bin/sh
trap ctrl_c INT
ctrl_c () {
RUNNING=0
}
RUNNING=1
while [ "$RUNNING" = 1 ]; do
echo 'working'
sleep 1
echo 'on something else'
sleep 1
echo 'done'
done发布于 2014-07-19 16:05:55
像这样(未经测试)
#!/bin/bash
trap "DONE=1" SIGINT
DONE=0
while [ $DONE -eq 0 ]
do
process1
process2
process3
donehttps://stackoverflow.com/questions/24838094
复制相似问题