是否有更短,更易读的方法根据另一个变量设置变量? (“映射”值):
if [ "$?" -eq 0 ] ; then res="OK" ; else res="ERROR" ; fi
在python中你可以这样做:
res = "OK" if xxx = 0 else "ERR"
哪个是非常易读的
答案 0 :(得分:1)
由于您测试了命令的退出状态,您可以在条件构造中使用该命令。
if command; then ....; else ....; fi
答案 1 :(得分:1)
应该注意的是,在这种特殊情况下,以下工作:
sapply()
建议不要在同一行使用the-command && res=OK || res=ERROR
和&&
,因为它不等同于||
if
;如果else
之后的表达式具有失败状态,则将执行最后一个表达式。
通常&&
或&&
在shell中用于检查状态并快速退出。
创造性的方式
||
算术运算存在三元运算符
基于默认替换的另一种方式
exit_codes=(OK ERROR)
...
res=${exit_codes[$?==0?0:1]}
但这不可读
答案 2 :(得分:0)
从一个简单的数组开始:
msgs=(ERROR OK)
现在,使用!$?
索引数组;退出状态为0,结果为1,任何非零值的退出状态都为0。
$ true; res=${msgs[!$?]}; echo "$res"
OK
$ false; res=${msg[!$?]}; echo "$res"
ERROR