在if语句KSH中使用“false”

时间:2013-08-27 12:59:31

标签: if-statement ksh

我的代码:

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

但这是不必要的,不是吗?顺便说一句 - 我确实尝试过这个代码可以运行。)

1 个答案:

答案 0 :(得分:2)

关于空白,贝壳很挑剔。例如,在具有特定设置的交互式bash shell中,!$bVar4将尝试根据!进行历史记录扩展,但! $bvar4会扩展字符串$bvar4,尝试执行生成的字符串,然后否定返回值。可能需要在!之后添加空格以确保预期的语义。