首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:当存在CTRL-C时如何中断此脚本?

Bash:当存在CTRL-C时如何中断此脚本?
EN

Stack Overflow用户
提问于 2010-03-31 17:03:56
回答 3查看 5.8K关注 0票数 7

我编写了一个很小的Bash脚本来查找包含传入参数的字符串的所有Mercurial变更集(从提示开始):

代码语言:javascript
复制
#!/bin/bash

CNT=$(hg tip | awk '{ print $2 }' | head -c 3)
while [ $CNT -gt 0 ]
do
    echo rev $CNT
    hg log -v -r$CNT | grep $1       
    let CNT=CNT-1
done

如果我通过按ctrl-c来中断它,那么当前执行的命令通常是"hg log“,并且被中断的是该命令,然后我的脚本继续执行。

我当时正在考虑检查"hg log“的返回状态,但因为我正在将它导入grep,所以我不太确定如何去做……

当这个脚本被中断时,我应该如何退出?(顺便说一句,我不知道这个脚本对我想做的事情是不是很好,但它确实完成了工作,而且我对“中断”的问题很感兴趣)

EN

Stack Overflow用户

回答已采纳

发布于 2010-03-31 17:27:00

像这样重写脚本,使用$PIPESTATUS数组检查故障:

代码语言:javascript
复制
#!/bin/bash

CNT=$(hg tip | awk '{ print $2 }' | head -c 3)
while [ $CNT -gt 0 ]
do
    echo rev $CNT
    hg log -v -r$CNT | grep $1
    if [ 0 -ne ${PIPESTATUS[0]} ] ; then
            echo hg failed
            exit
    fi     
    let CNT=CNT-1
done
票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2551614

复制
相关文章

相似问题

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