bash - 在测试函数中使用参数调用bash函数
问题描述
我想在测试函数 (()) 中调用带有参数的函数并根据退出代码执行操作。
function f { return
}
作品:在没有参数的测试函数(())中调用函数和测试退出代码:
((f)) || echo ok <-- UPDATE: the function isn't called but (undefined) variable f is evaluated to 0
作品:使用参数调用函数并测试退出代码
f 1 && echo ok
作品:使用表达式测试函数(()):
((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 ...
解决方案
if ((var)); then f arg1 arg2 agr3 if [[ $? != 0 ]]; then ... fi fi
我想要的:只有一个带有 AND 的逻辑表达式,同时检查两个条件。
只是:
if ((var)) && ! f arg1 arg2 agr3; then
作为一般规则,尽量不要使用$?
- 只是测试内部命令的结果if
。
推荐阅读
- jms - Weblogic JMS 桥 weblogic.transaction.RollbackException
- c - 避免暴露已编译 C 模块的细节
- c# - 我从 api 检索到的 json 有问题
- javascript - 遍历angularjs中的字符串化json数据返回未定义
- javascript - 我们可以在一个 node.js 中使用 app.use 两次吗
- html - 根据另一个 div 的子元素中的类隐藏 div 的子元素
- jsf - 在 JSF 页面的页面加载期间未调用 @PostConstruct
- sql-server - 从 varchar 转换为 numeric 时出错
- taurus - 何在 yaml 中传递本地 apache jmeter 路径
- three.js - DstAlphaFactor 在 THREE.js 中不起作用