linux - bash 脚本的算术错误

标签 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

我想知道为什么我无法进行比较?
谢谢

最佳答案

因为 2.4.3 不是数字,因此您不能使用数字比较。

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

  1.2.3 >= 1.0.0 
  but
  1.2.3 < 1.10.3

看到问题了吗?

关于linux - bash 脚本的算术错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19275176/

相关文章:

c - D-Bus 是否保证消息传递?

Linux环境变量

bash - 在 bash 中将字符串切割成多行

Javascript 计算错误

Android金鱼内核编译

bash - 如何在shell的if条件下找到选项

macos - 您将自己的脚本保存在 OSX 的什么位置?

python - 在 Python 中计算以 10 为底的对数的算法

javascript - 《Build an HTML5 Game》一书中开发游戏时如何计算碰撞

linux - 如何在 Linux ELF 中将 .text 部分分离为 4K 对齐地址