bash 中的多重比较语句失败-bash:[:缺少`]'

bash 中的多重比较语句失败-bash:[:缺少`]'

我需要将一个变量与多个变量进行比较,如下所示。

if [ [ "$SECONDS" -ne "$one" || "$SECONDS" -ne "$two" ] ]

这句话给了我错误

[: missing `]'

我如何将 SECONDS 的值与一和二进行比较。所有这些都是整数比较。

答案1

if表达式的正确语法狂欢此参考

表 7-2. 组合表达式

Operation                  Effect
------------------    ------------------
[ ! EXPR ]            True if EXPR is false.
[ ( EXPR ) ]          Returns the value of EXPR. This may be used to override the normal precedence of operators.
[ EXPR1 -a EXPR2 ]    True if both EXPR1 and EXPR2 are true.
[ EXPR1 -o EXPR2 ]    True if either EXPR1 or EXPR2 is true.

你的 if 语句应该是这样的:

if [ "$SECONDS" -ne "$one" -o "$SECONDS" -ne "$two" ]

答案2

您还可以使用[[关键字:

if [[ "$SECONDS" -ne "$one" || "$SECONDS" -ne "$two" ]];

其图表如下help [[

 EXPR1 && EXPR2   True if both EXPR1 and EXPR2 are true; else false
 EXPR1 || EXPR2   True if either EXPR1 or EXPR2 is true; else false

[当您使用空格和另一个;开始您的语句时[,Bash 会认为您正在另一个(second ) 上运行test(First ) 。[test[

在此之前,||它会寻找]文字,如果找不到就会发出抱怨。

相关内容