0

我的代码:

if $bVar1 && $bVar2
then
    echo "bVar1 & bVar2 are true"
elif $bVar3 && !$bVar4
then
    echo "bVar3 is true; bVar4 is false"
fi

!$bVar4部件未按预期工作。我试过了:

elif $bVar3 && !$bVar4
elif $bVar3 && !${bVar4}
elif $bVar3 && !$(bVar4)

但我无法让这条线truebVar3=true和时返回bVar4=false

为了完整起见,变量分配如下:

bVar3=true
bVar4=false

(当然,我可以像这样添加一个嵌套if语句elif

if $bVar1 && $bVar2
then
    echo "bVar1 & bVar2 are true"
elif $bVar3
then
    if $bVar4
    then
        : #pass
    else
        echo "bVar3 is true; bVar4 is false"
    fi
fi

但那是不必要的,不是吗?顺便说一句-我确实尝试过,并且此代码有效。)

4

1 回答 1

2

Shell 对空格很挑剔。例如,在具有某些设置的交互式 bash shell 中,!$bVar4将尝试作为 的结果进行历史扩展!,但! $bvar4将扩展字符串$bvar4,尝试执行结果字符串,然后否定返回值。在之后添加空格!可能是确保预期语义所必需的。

于 2013-08-27T13:14:00.573 回答