我想在测试函数(())中调用带有参数的函数,并根据退出代码进行操作。
function f { return
}
Works:不带参数和测试退出代码的测试函数(())中的调用函数:
((f)) || echo ok <-- UPDATE: the function isn't called but (undefined) variable f is evaluated to 0
Works:使用参数调用函数并测试退出代码
f 1 && echo ok
Works:带有表达式的测试函数(()):
((1+1)) && echo ok
不起作用:在测试函数(())中调用带有参数的函数,并测试退出代码:
((f 1)) || echo ok <-- UPDATE: no call of function f, but f evaluated to 0
表达式中的语法错误(错误标记为“ 1”)
更新:以上方法没有意义,因为未在(())中调用函数f
我所拥有的:
if ((var)); then
f arg1 arg2 agr3
if [[ $? != 0 ]]; then
...
fi
fi
我想要的是:仅一个带有AND的逻辑表达式,同时检查两个条件。 并且仅在对var求值后才执行f,所以不能:
f arg1 arg2 arg3
if [[ ($? != 0) && ($var != 0) ]]; then ...
答案 0 :(得分:1)
if ((var)); then f arg1 arg2 agr3 if [[ $? != 0 ]]; then ... fi fi
我想要的是:只有一个带有AND的逻辑表达式,同时检查两个条件。
只是:
if ((var)) && ! f arg1 arg2 agr3; then
通常,请尝试完全不使用$?
-仅测试if
中的命令结果。