测试函数中带有参数的bash函数调用

时间:2020-07-03 11:34:47

标签: bash function parameter-passing

我想在测试函数(())中调用带有参数的函数,并根据退出代码进行操作。

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 ...

1 个答案:

答案 0 :(得分:1)

if ((var)); then
  f arg1 arg2 agr3
  if [[ $? != 0 ]]; then
    ...
  fi
fi

我想要的是:只有一个带有AND的逻辑表达式,同时检查两个条件。

只是:

if ((var)) && ! f arg1 arg2 agr3; then

通常,请尝试完全不使用$?-仅测试if中的命令结果。