我在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导致此问题。 请指导我这个
答案 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低于。