bash脚本的算术错误

时间:2013-10-09 14:41:16

标签: linux bash math if-statement

我知道这是一个愚蠢的错误,但我还能找到解决方案 我必须比较apache版本。如果apache版本大于2.4.3,我必须在安装apache之前在系统中安装apr 但由于某种原因,我在比较中得到算术错误。
基本上,我得到了apache版本,我必须将其与2.4.3进行比较 这是测试脚本:

#!/bin/ksh

version="2.4.4"
echo "$version"

#if [ '2.4.3' == "$version" ] || [ '2.4.3' < "$version" ]
if [ '2.4.3' -gt '$version' ]

then
        print "Mayor or equal"
else
        print "Error"
fi

这是输出:

2.4.4
./test9.sh[9]: [: 2.4.3: arithmetic syntax error
Error

我想知道为什么我不能进行比较? 感谢

3 个答案:

答案 0 :(得分:2)

因为2.4.3不是数字,所以你不能使用NUMERIC比较。

这些是字符串,比较那样的版本并不是一个好主意。例如:

  1.2.3 >= 1.0.0 
  but
  1.2.3 < 1.10.3

看到问题?

答案 1 :(得分:1)

if [[ '2.4.3' > "$version" ]]
then
    echo  "Mayor or equal"
else
    echo "Error"
fi

答案 2 :(得分:-1)

在这种情况下,您可以删除小数,但这不是一般解决方案。 适用于您的示例,而不适用于版本1.10.5甚至2.10 ......

 [ 244 -gt ${version//./} ] && echo True

如果您想要一些非常强大(长期)的内容,您可以在评论中使用the solution链接。