Shell-Script

Bash - 需要整數表達式

  • July 3, 2016

我正在檢查我的主題的更新腳本

我有 2 個文本文件。第一個稱為“current.txt”,包含目前版本。該文本文件中有4.1.1字元串。

第二個稱為“latest.txt”,包含最新版本。4.2此文本文件中有字元串。

所以這裡是程式碼

echo "Checking update";
x=$(cat ./current.txt)
y=$(cat ./latest.txt)
if [ "$x" -eq "$y" ]
then
      echo There is version $y update
else
      echo Version $x is the latest version
fi

這意味著如果 current.txt 與 latest.txt 不同,那麼它會說“有版本 4.2 更新”。如果不是,它會說“版本 4.1.1 是最新版本”

但是當我嘗試執行它時。我收到這個錯誤

Checking update
./test.sh: line 4: [: 4.1.1: integer expression expected
Version 4.1.1 is the latest version

那麼我在做什麼錯呢?

test命令也稱為[,具有用於字元串比較和整數比較的單獨運算符:

整數 1 -eq 整數 2

INTEGER1 等於 INTEGER2

對比

字元串 1 = 字元串 2

字元串相等

字元串 1 != 字元串 2

字元串不相等

由於您的數據不是嚴格意義上的整數,因此您的測試需要使用字元串比較運算符。評論中的最後一個認識是“-eq”邏輯與 if/else 語句的含義不匹配echo,因此新的程式碼段應該是:

...
if [ "$x" != "$y" ]
then
      echo There is version $y update
else
      echo Version $x is the latest version
fi

引用自:https://unix.stackexchange.com/questions/293495