将变量存储到布尔表达式的结果中

时间:2015-07-27 12:16:37

标签: bash

是否可以将布尔表达式的结果连续存储到变量中?

实施例

ret=0
for each in aCollection do
    executeSomeCommand;
    # vvv compare stored value against a returned value and store it again
    ret=$ret || $?;
done;
[[ ret = 0 ]] && echo "success"

问题是如果$?1,那么$ret仍然包含零

ret=0
echo $ret # --> 0
ret=$ret || 1
echo $ret # --> 0 (should be 1)

1 个答案:

答案 0 :(得分:4)

您有分组/操作顺序问题。当你这样做

ret=$ret || 1

它首先执行ret=$ret然后获取结果并使用||执行1,然后忽略其结果。因此,您正在执行的任务的唯一部分是再次为自己分配ret

你想要的是$ret || 1部分并存储结果,所以你需要像

那样的parens
ret=$(($ret || 1))