Bash

檢查輸入數字是否為整數

  • April 14, 2022

我正在嘗試檢查輸入是否為整數,並且我已經檢查了一百次,但沒有看到其中的錯誤。唉,它不起作用,它會觸發所有輸入(數字/字母)的 if 語句

read scale
if ! [[ "$scale" =~ "^[0-9]+$" ]]
       then
           echo "Sorry integers only"
fi

我玩過這些報價,但要麼錯過了它,要麼什麼也沒做。我做錯了什麼?有沒有更簡單的方法來測試輸入是否只是一個整數?

刪除引號

if ! [[ "$scale" =~ ^[0-9]+$ ]]
   then
       echo "Sorry integers only"
fi

使用test命令-eq的操作符:

read scale
if ! [ "$scale" -eq "$scale" ] 2> /dev/null
then
   echo "Sorry integers only"
fi

它不僅適用於bash任何 POSIX shell。來自 POSIX測試文件:

n1 -eq  n2
   True if the integers n1 and n2 are algebraically equal; otherwise, false.

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