更可读的方式来设置bash变量

时间:2017-05-29 10:29:59

标签: bash shell

是否有更短,更易读的方法根据另一个变量设置变量? (“映射”值):

if [ "$?" -eq 0 ] ; then res="OK" ; else res="ERROR" ; fi

修改

在python中你可以这样做:

res = "OK" if xxx = 0 else "ERR"

哪个是非常易读的

3 个答案:

答案 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