BASH:如何从函数中正确地 return true 和 false
BASH: How to correctly return true and false from a function
我在 bash 脚本中有一个函数,如果进程是 运行,我想 return 为真,否则为假。我的函数代码是:
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
这有什么原因吗?我没有 return 在我的函数中输入正确的值吗?还是这一切都被错误地实施了?
[
不是语法;这是一个命令。它通常与 if
一起使用,它基于其 return 代码工作。
直接查看不同命令的return代码,例如kill
,你应该删除 [
和 ]
([
的最后一个参数):
if kill -s 0 $(getPid) &>/dev/null; then
# ...
fi
注意 &>
是一个 Bash 扩展,相当于 >/dev/null 2>&1
。
我在 bash 脚本中有一个函数,如果进程是 运行,我想 return 为真,否则为假。我的函数代码是:
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
这有什么原因吗?我没有 return 在我的函数中输入正确的值吗?还是这一切都被错误地实施了?
[
不是语法;这是一个命令。它通常与 if
一起使用,它基于其 return 代码工作。
直接查看不同命令的return代码,例如kill
,你应该删除 [
和 ]
([
的最后一个参数):
if kill -s 0 $(getPid) &>/dev/null; then
# ...
fi
注意 &>
是一个 Bash 扩展,相当于 >/dev/null 2>&1
。