![bash 中的多重比较语句失败-bash:[:缺少`]'](https://linux22.com/image/1202450/bash%20%E4%B8%AD%E7%9A%84%E5%A4%9A%E9%87%8D%E6%AF%94%E8%BE%83%E8%AF%AD%E5%8F%A5%E5%A4%B1%E8%B4%A5-bash%3A%5B%3A%E7%BC%BA%E5%B0%91%60%5D'.png)
我需要将一个变量与多个变量进行比较,如下所示。
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
[
在此之前,||
它会寻找]
文字,如果找不到就会发出抱怨。