3

次を使用して、引数が整数であるかどうかを確認する方法を知っています。

if [[ $2 = *[[:digit:]]* ]]; then
    # $2 is a number
else
    # $2 is not a number
fi

ただし、引数が整数でないかどうかを確認する必要があります。どうやってやるの?

4

4 に答える 4

4

$2 = *[[:digit:]]*数字$2 が含まれているかどうかのみをチェックします。

# is an integer
[[ $2 =~ ^[[:digit:]]+$ ]]
# is not an integer
[[ ! $2 =~ ^[[:digit:]]+$ ]]
于 2013-04-01T14:38:24.857 に答える
0

とても簡単です。あなたはこれを行うことができます :

   if echo $Myvar | egrep -q '^[0-9]+$'; then
      # $Myvar is a number
   else
      # $Myvar is not a number
   fi

これは、主に数値チェックに使用するものです。

于 2013-04-01T14:37:08.117 に答える
0

入力が数字かどうかのみをテストします。たとえば 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
于 2013-04-01T14:38:37.077 に答える