我编写了一个很小的Bash脚本来查找包含传入参数的字符串的所有Mercurial变更集(从提示开始):
#!/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,所以我不太确定如何去做……
当这个脚本被中断时,我应该如何退出?(顺便说一句,我不知道这个脚本对我想做的事情是不是很好,但它确实完成了工作,而且我对“中断”的问题很感兴趣)
发布于 2010-03-31 17:27:00
像这样重写脚本,使用$PIPESTATUS数组检查故障:
#!/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
donehttps://stackoverflow.com/questions/2551614
复制相似问题