如何在shell脚本中进行比较?
或者说,为什么下面的脚本没有输出?
或者说,为什么下面的脚本没有输出?
x=1
if[ $x = 1 ] then echo "ok" else echo "no" fi
x=1
if[ $x = 1 ] then echo "ok" else echo "no" fi
使用 -eq
, -ne
, ... 来比较数字,表示相等、不相等等。
x=1
if [ $x -eq 1 ]
then
echo "ok"
else
echo "no"
fi
对于其他情况,请使用 ==
而不是 =
。
快速解决方案:使用快捷键AND和OR:
x=1
(( $x == 1 )) && echo "ok" || echo "no"
if [ ]
)if (( ))
)运算符 :-
-eq
等于
-ne
不等于
-gt
大于
-ge
大于或等于
-lt
小于
-le
小于或等于
在您的情况下:
x=1
if [ $x -eq 1 ]
then
echo "ok"
else
echo "no"
fi
双括号结构也是 Bash 允许变量进行类似 C
语言操作的机制,例如:(( var++ ))。
在您的情况下:
x=1
if (( $x == 1 )) # C like statements
then
echo "ok"
else
echo "no"
fi
这取决于编程语言。在bash中,您可以使用==
运算符。否则,您可以使用-eq
-lt
-gt
来表示等于、小于、大于。
$ x=1
$ if [ "$x" == "2" ]; then echo "yes"; else echo "no"; fi
no
编辑:添加了 ==
周围的空格并进行了2次测试。
[ "$x"=="2" ]
命令,你会发现这也是正确的。你需要使用[ "$x" = "1" ]
或[ $x -eq 1 ]
,或者在bash中使用[[ $x == 1 ]]
或(( x == 1 ))
。 - glenn jackman
if [ $x = 1 ]; then echo "ok"; else echo "no"; fi
- Sergiobash: syntax error near unexpected token \
then'`。 - The Student1=1: 命令未找到
。 - The Student