如何在shell脚本中进行比较?
或者,以下脚本为什么不打印?
x=1
if[ $x = 1 ] then echo "ok" else echo "no" fi
答案 0 :(得分:9)
使用数字,使用-eq
,-ne
,...代表等于,而不是等于......
x=1
if [ $x -eq 1 ]
then
echo "ok"
else
echo "no"
fi
对于其他人,请使用==
而不是=
。
答案 1 :(得分:4)
使用快捷键AND和OR的简短解决方案:
x=1
(( $x == 1 )) && echo "ok" || echo "no"
答案 2 :(得分:1)
这取决于语言。使用bash,您可以使用==
运算符。另外,您可以使用-eq
-lt
-gt
代替等号,低价格,更重要。
$ x=1
$ if [ "$x" == "2" ]; then echo "yes"; else echo "no"; fi
no
修改:在==
周围添加空格并使用2进行测试。
答案 3 :(得分:1)
您可以通过两种方法在shell中进行比较
if [ ]
)if (( ))
)操作员:-
-eq
等于
-ne
不等于
-gt
大于
-ge
大于或等于
-lt
小于
-le
小于或等于
以您为例:-
x=1
if [ $x -eq 1 ]
then
echo "ok"
else
echo "no"
fi
双括号结构也是一种允许C
样式操作Bash中的变量(例如(( var++ )).
在您的情况下:-
x=1
if (( $x == 1 )) # C like statements
then
echo "ok"
else
echo "no"
fi