嗨,我正在做一些事情,我需要创建一个 if 语句,它将在 '&&' 和 '||' 中使用多个变量组合 。现在我正在尝试这个简单的任务,但我收到错误“找不到命令”。我想先&&比||两个计数它带有我在代码中设置的标志。以下是我正在尝试的代码
if [[$pcount -eq 0 ] && [$ucount -eq 0]] || [test $flag -eq 1]
then
do my stuff
else
exit 1
fi
先感谢您。
最佳答案
你不能嵌套 [ ... ]
因为 [
是一个 shell 命令,而不是一个单独的语法结构。在 Bash 中,您可以使用 [[ ... ]]
支持嵌套的句法结构,可移植 sh
您可以使用 ( ... )
括号优先:
if ([ $pcount -eq 0 ] && [ $ucount -eq 0 ]) || [ $flag -eq 1 ]
补充说明:
[test condition]
没有意义,因为 [
运算符已经是 test
的别名.写信 [ condition ]
或 test condition
. [
前留一个空格和测试,否则 sh
无法识别 [
作为命令名称。 [
是一个与任何其他命令一样的命令,与特殊的解析规则无关。 关于unix - if 语句 bash 中的多个和 ors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13375619/