次を使用して、引数が整数であるかどうかを確認する方法を知っています。
if [[ $2 = *[[:digit:]]* ]]; then
# $2 is a number
else
# $2 is not a number
fi
ただし、引数が整数でないかどうかを確認する必要があります。どうやってやるの?
$2 = *[[:digit:]]*
数字$2
が含まれているかどうかのみをチェックします。
# is an integer
[[ $2 =~ ^[[:digit:]]+$ ]]
# is not an integer
[[ ! $2 =~ ^[[:digit:]]+$ ]]
とても簡単です。あなたはこれを行うことができます :
if echo $Myvar | egrep -q '^[0-9]+$'; then
# $Myvar is a number
else
# $Myvar is not a number
fi
これは、主に数値チェックに使用するものです。
入力が数字かどうかのみをテストします。たとえば is $2 is "43" の場合、次のように出力されます: 43 is not a number 実際の数値をチェックするようにソリューションを修正するには、正規表現を使用します。
if [[ $2 =~ ^-?[[:digit:]]+$ ]]; then
echo "$2 is a number"
fi
入力が数値ではないかどうかを確認するには、テストを否定するだけです。
if [[ ! $2 =~ ^-?[[:digit:]]+$ ]]; then
echo "$2 is not a number"
fi