我的代码:
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)
但在true
和bVar3=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
但这是不必要的,不是吗?顺便说一句 - 我确实尝试过这个代码可以运行。)
答案 0 :(得分:2)
关于空白,贝壳很挑剔。例如,在具有特定设置的交互式bash shell中,!$bVar4
将尝试根据!
进行历史记录扩展,但! $bvar4
会扩展字符串$bvar4
,尝试执行生成的字符串,然后否定返回值。可能需要在!
之后添加空格以确保预期的语义。