我知道这是一个愚蠢的错误,但我还能找到解决方案
我必须比较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
我想知道为什么我不能进行比较? 感谢
答案 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链接。