首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >shell脚本-在退出无限循环之前完成迭代

shell脚本-在退出无限循环之前完成迭代
EN

Stack Overflow用户
提问于 2014-07-19 15:55:05
回答 2查看 123关注 0票数 1

我对shell脚本非常陌生,需要在这方面的帮助。

我想运行一些具有无限循环的命令,我想在按下ctrl-c时终止循环,但在终止之前,我想要完成当前迭代(意味着循环中的所有语句都应该被执行。

代码语言:javascript
运行
复制
infinite-loop (
   command 1;
   command 2; 
   command 3;
loop-ends

因此,在ctrl-c中的任何执行点,都应该在终止循环之前执行所有3个命令。如果没有按下ctrl-c,循环应该会继续执行。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2014-07-19 16:07:01

您可以使用trap来捕获信号。(已测试)

代码语言:javascript
运行
复制
#!/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
票数 3
EN

Stack Overflow用户

发布于 2014-07-19 16:05:55

像这样(未经测试)

代码语言:javascript
运行
复制
#!/bin/bash
trap "DONE=1" SIGINT
DONE=0
while [ $DONE -eq 0 ]
do
    process1
    process2
    process3
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24838094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档