在shell中比较变量和整数?

23

我有一个if语句需要运行,只要我存储在$counter变量中的值大于5

这是我当前(无法正常工作)脚本的相应部分:

if $counter > 5
then
    echo "something"
fi

我犯的错误可能非常明显,但出于某些原因,我在网上找不到解决方案..谢谢!

2个回答

49

那很简单:

if [ "$counter" -gt 5 ]
then
    echo "something"
fi

2
除非你需要 sh 兼容性,否则最好使用 [[]] 而不是 []。请参阅 http://mywiki.wooledge.org/BashFAQ/031。 - Thomas
@konsolebox,你需要查看问题下面的标签。标题往往会误导人。 - glenn jackman
2
如果你正在使用 bash,那么 (( counter > 5 )) 更好。 - chepner
@chepner 我不同意:https://dev59.com/wmMl5IYBdhLWcg3wP04a#18568726 - konsolebox
1
@glennjackman,我其实不确定所有标记为“bash”的人是否知道“bash”和简单的“sh”之间的区别。(仅供参考的评论)。 - konsolebox
显示剩余3条评论

26

需要在(())之间进行算术运算:

if (( $counter > 5 ))

顺便提一下,在算术运算中您也可以省略 $,但保留它不会有任何问题。


是的,但我认为条件表达式应该在[[ ]]中完成。那么真正应该选择哪一个呢?我的选择是[[ ]]。请查看我的论点:https://dev59.com/wmMl5IYBdhLWcg3wP04a#18568726。(供参考的评论)。 - konsolebox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接