if语句bash中的多个和ors

Fai*_*eer 3 unix

嗨我正在研究somoething,我需要创建一个if语句,它将在'&&'和'||'中包含多个变量 组合.现在我正在尝试这个简单的任务,但我收到错误'命令未找到'.我想首先&&两个计数而不是|| 它带有我在我的代码中设置的标志.以下是我正在尝试的代码

if [[$pcount -eq 0 ] && [$ucount -eq 0]] ||  [test $flag -eq 1]
then 
do my stuff 
else 
exit 1
fi
Run Code Online (Sandbox Code Playgroud)

先感谢您.

use*_*342 8

你不能嵌套,[ ... ]因为它[是一个shell命令,而不是一个单独的语法结构.在Bash中,您可以使用[[ ... ]]支持嵌套的语法结构,在便携式中,sh您可以使用( ... )括号作为优先级:

if ([ $pcount -eq 0 ] && [ $ucount -eq 0 ]) ||  [ $flag -eq 1 ]
Run Code Online (Sandbox Code Playgroud)

补充说明:

  • [test condition]没有意义,因为[运营商已经是别名了test.写一个[ condition ]test condition.

  • [在测试之前留一个空格,否则sh将不会识别[为命令名.[是一个与任何其他命令一样的命令,与特殊的解析规则无关.