unix - if 语句 bash 中的多个和 ors

标签 unix

嗨,我正在做一些事情,我需要创建一个 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/

    相关文章:

    c - 间隔定时器出现问题

    linux - 发现之间的区别。 –name *.txt 并找到 . –名称 "*.txt"

    linux - Shell脚本使用sendmail嵌入多个图像

    linux - 如何仅从以 x 开头的行中剪切字符?

    用于删除 CSV 文件第一行的 Unix 脚本

    perl - 是否可以使 'exec' 在 Perl 中使用 '$SHELL -c' 而不是 '/bin/sh -c'?

    c - 多管道 C 程序不起作用

    c - 标签只能作为语句的一部分使用 Error

    linux - 如何加密 Unix shell 脚本

    c - 确定什么 secret 握手导致他们只打印给定的行一次