Bash can';t检查pkill命令是否成功

Bash can';t检查pkill命令是否成功,bash,Bash,我的bash中有这种代码 pkill <stuff> if [ $? -eq 0 ]; then echo OK else echo FAIL fi pkill 如果[$?-等式0];然后 回声OK 其他的 回音失败 fi 但它总是进入失败的部分。 如何检查pkill命令是否成功 如手册页中所述,PKIL具有不同的退出状态代码: EXIT STATUS 0 One or more processes matched the criteria.

我的bash中有这种代码

pkill <stuff>
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi
pkill
如果[$?-等式0];然后
回声OK
其他的
回音失败
fi
但它总是进入失败的部分。
如何检查pkill命令是否成功

如手册页中所述,PKIL具有不同的退出状态代码:

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
#/usr/bin/env bash
普基尔
pkillexitstatus=$?
如果[$pkillexitstatus-等式0];然后
echo“一个或多个流程符合标准”
elif[$pkillexitstatus-等式1];然后
echo“没有匹配的进程”
elif[$pkillexitstatus-等式2];然后
echo“命令行中的语法错误”
elif[$pkillexitstatus-等式3];然后
回显“致命错误”
其他的
呼应意外
fi

如手册页中所述,PKI将具有不同的退出状态代码:

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
#/usr/bin/env bash
普基尔
pkillexitstatus=$?
如果[$pkillexitstatus-等式0];然后
echo“一个或多个流程符合标准”
elif[$pkillexitstatus-等式1];然后
echo“没有匹配的进程”
elif[$pkillexitstatus-等式2];然后
echo“命令行中的语法错误”
elif[$pkillexitstatus-等式3];然后
回显“致命错误”
其他的
呼应意外
fi

Hint:lookup
man-pkill
EXIT STATUS
部分下,您确定即使pkill成功也进入失败分支吗?看起来您的pkill命令总是失败,而且
if
执行的正是它应该执行的操作。提示:在
退出状态
部分下查找
man pkill
,您确定即使pkill成功也输入失败分支吗?看起来您的pkill命令一直都失败,而
if
恰好完成了它应该做的事情。我不知道这是如何回答这个问题的。所有与0不同的退出代码都是错误,因此OPs脚本似乎正常。退出状态1不一定是错误。由于@Lanodisoft没有提供任何进一步的信息,除了他自己,没有人可以帮助他:-)我的回答应该帮助他,更好地理解PKIL如何与其调用方/他的bash脚本通信,以便他能够找出它为什么不能按他所期望的那样工作。我不知道这是如何回答这个问题的。所有与0不同的退出代码都是错误,因此OPs脚本似乎正常。退出状态1不一定是错误。由于@Lanodisoft没有提供任何进一步的信息,除了他自己,没有人能帮助他:-)我的回答应该能帮助他更好地理解pkill是如何与调用方/他的bash脚本通信的,这样他就可以弄清楚为什么它不能按他所期望的那样工作。