我有一个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
或其他任何方式来查明此脚本中是否有进程被终止?
非常感谢任何帮助。
答案 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 -2
(INT
,相当于Ctrl-C)。