在某些情况下,函数需要执行并返回给调用者,这对我有用。
if tst; then
echo "success"
else
echo "failure"
fi
function tst () {
return 0;
}
但是,我似乎无法使用快捷语法来做到这一点。我尝试了以下语句的多种组合,包括测试 if [[ tst = true ]] 或 if it = "0" 但我无法弄清楚。
[[ tst ]] && echo "success" || echo "failure"
使用 bash 快捷语法在 if 条件下测试函数的正确方法是什么?
答案1
假设你想使用A && B || C
,那么只需直接调用该函数即可:
tst && echo "success" || echo "failure"
如果您想使用[[
,则必须使用退出值:
tst
if [[ $? -eq 0 ]]
then
...
答案2
(这不是真正的答案,更多的是评论)
您必须小心使用a && b || c
快捷方式:
- 如果
a
返回成功,则b
执行 - 如果
b
随后返回退出状态,那么c
也将被执行。
$ [[ -f /etc/passwd ]] && { echo "file exists"; false; } || echo "file does not exist"
file exists
file does not exist
if a; then b; else c; fi
在这方面更安全,因为c
不依赖于b
,仅a
$ if [[ -f /etc/passwd ]];then { echo "file exists"; false; }; else echo "file does not exist"; fi
file exists
$ echo $?
1