我的bash中有这种代码
pkill <stuff>
if [ $? -eq 0 ]; then
echo OK
else
echo FAIL
fi
但是它总是进入失败部分。 如何检查pkill命令是否成功?
答案 0 :(得分:2)
如联机帮助页中所述,pkill具有不同的退出状态代码:
EXIT STATUS
0 One or more processes matched the criteria.
1 No processes matched.
2 Syntax error in the command line.
3 Fatal error: out of memory etc.
您的代码会分析退出代码(即$?代表什么),但是您不会检查自己是否有1、2或3 ...您也应该(!!!)对此进行检查:>
#!/usr/bin/env bash
pkill <stuff>
pkillexitstatus=$?
if [ $pkillexitstatus -eq 0 ]; then
echo "one or more processes matched the criteria"
elif [ $pkillexitstatus -eq 1]; then
echo "no processes matched"
elif [ $pkillexitstatus -eq 2]; then
echo "syntax error in the command line"
elif [ $pkillexitstatus -eq 3]; then
echo "fatal error"
else
echo UNEXPECTED
fi