bash - 无法检查 pkill 命令是否成功

标签 bash

我的 bash 中有这样的代码

pkill <stuff>
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi

但它总是进入失败部分。 如何检查pkill命令是否成功?

最佳答案

正如手册页中所写,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

关于bash - 无法检查 pkill 命令是否成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54530278/

相关文章:

linux - 每 1 毫秒从 PMU 收集特定进程的数据

excel - 将粘贴制表符分隔的结果复制到 excel 文件中

linux - Grep csv 与来自另一个 csv 的参数

Windows Powershell 中的 Linux Bash Shell 命令

linux - 为什么我需要括号 In bash `set -e` 和否定返回码

bash 中包含日期格式和 .zip 扩展名的备份文件的正则表达式

linux - du如何估计文件大小?

linux - Ubuntu 在 grep 中使用 -q 标志时出现 EPIPE 错误

python - 使用 Python 将变量传递给 bash 命令

linux - Bash 脚本似乎忽略了第一个变量