BASH:如何从函数中正确返回 true 和 false

标签 bash function boolean return kill

我在 bash 脚本中有一个函数,如果进程正在运行我想返回 true,否则返回 false。我的功能代码是:

    checkProcess() {
        if [ kill -s 0 $(getPid) > /dev/null 2>&1 ]; then
            return 0
        else
            return 1
        fi 
    }

当我使用这个功能时,它似乎不起作用。我这样使用它:

    if [ ! checkProcess ]; then
        #do something, like rm file containing PID
    fi

但是,如果我只使用下面的实现,它工作正常:

    if [ ! kill -s 0 $(getPid) > /dev/null 2>&1 ]; then
        #do something, like rm file containing PID
    fi

这是有原因的吗?我没有在我的函数中返回正确的值吗?还是这一切都被错误地实现了?

最佳答案

[ 不是语法;这是一个命令。它通常与 if 一起使用,它根据其返回码工作。

直接检查不同命令的返回码,例如kill,你应该删除[]([的最后一个参数):

if kill -s 0 $(getPid) &>/dev/null; then
    # ...
fi

请注意,&> 是 Bash 扩展,等同于 >/dev/null 2>&1

关于BASH:如何从函数中正确返回 true 和 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339932/

相关文章:

c++ - const_cast with bool : if condition ignored

macos - 无法在 OS X 10.10 上为 Qt Creator 设置自定义 $PATH

linux - "ls"在 cmd 行中工作,但在名称中有空格的目录的脚本中不工作

jquery - 这个 jquery 语法是什么?

bash - Makefile 中的函数

java - elsif 与 nextboolean 用于图片

python - 检查是否安装了python 3的问题

linux - Shell脚本在特定修改日期之后查找文件并按修改日期的顺序对它们进行排序

c++ - 有人可以解释这个功能是如何工作的吗?

sql - 在需要条件的上下文中指定的非 boolean 类型的表达式