如何在shell脚本中进行比较?

时间:2011-03-17 18:19:28

标签: linux bash shell command-line

如何在shell脚本中进行比较?

或者,以下脚本为什么不打印?

x=1
if[ $x = 1 ] then echo "ok" else echo "no" fi

4 个答案:

答案 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中进行比较

  1. 单括号语法(if [ ]
  2. 双括号语法(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