shell脚本中的比较

时间:2014-01-23 09:26:46

标签: shell unix comparison sh comparison-operators

我在shell脚本中进行比较

              if [ $# -lt 10  ]
              then
              echo "PROCEED"
              else 
              echo "STOP"

我将脚本运行为./test.sh 1 2 3 4 5 6 7 8 9 10 11 然后输出是“停止” 如果我使用“<”而不是使用“-lt”

              if [ $# < 10  ]
              then
              echo "PROCEED"
              else 
              echo "STOP"

然后输出“PROCEED”。

我的问题是在shell脚本的情况下,如果我比较不大于10导致此问题。 请指导我这个

3 个答案:

答案 0 :(得分:0)

你需要使用&lt;而不是 - 比较数字时,因为-lt进行STRING比较。

答案 1 :(得分:0)

Advanced Bash Shell Scripting Guide - 7.3. Other Comparison Operators中所示:

  

字符串比较

     

&LT;

     

小于,按ASCII字母顺序

     

如果[[&#34; $ a&#34; &LT; &#34; $ B&#34; ]

     

如果[&#34; $ a&#34; \&LT; &#34; $ B&#34; ]

     

请注意&#34;&lt;&#34;需要在[]构造中进行转义。

所以这样做的方法是使用-lt或再次引用:

  

整数比较

     

-lt 小于

     

如果[&#34; $ a&#34; -lt&#34; $ b&#34; ]

     

&lt; 小于(在双括号内)

     

((&#34; $ a&#34;&lt;&#34; $ b&#34;))

答案 2 :(得分:0)

请注意,Bash使用buildin“test”实现,man test - &gt; link

这也是这里的 - &gt; Stackoverflow Link

尖括号通常用于命令重定向! link

如果要比较整数,请使用-lt低于。