如何在bash脚本中获取kill命令结果

时间:2013-05-20 15:02:36

标签: bash kill

我有一个bash脚本,它运行一个命令来获取结果,并根据结果做一些事情。这是脚本:

#!/bin/bash
commandResult=$(($myCommand) 2>&1)
if [[ "$commandResult" == *Error* ]]; then 
    x="failed"
else
    x="success"
fi
echo $x
exit 0;

此脚本没有问题,问题是当我在命令行中通过$myCommand运行脚本时尝试终止kill -9 $myCommand时,$commandResult将为null并将印刷“成功”。

如何将kill结果放入$commandResult或其他任何方式来查明此脚本中是否有进程被终止?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您应该检查命令的退出代码,而不是输出到标准错误。 myCommand成功时应退出0,失败时退出一些非零代码。如果它是通过kill命令被杀死的,它的退出代码将自动为128 + n,其中n是你用来杀死它的信号。然后你可以用

测试成功
if myCommand; then
    echo success
    exit 0
else
    status=$?
    echo failure
    exit $status
fi

另外,你可能don't need to use kill -9。从kill开始(发送更温和的TERM信号);如果不起作用,请前往kill -2INT,相当于Ctrl-C)。