Bash で変数が数値かどうかをテストするにはどうすればいいですか? 質問する

Bash で変数が数値かどうかをテストするにはどうすればいいですか? 質問する

スクリプトに渡される引数が数値であるかどうかを確認する方法がわかりません。

私がやりたいのは、次のようなことです:

test *isnumber* $1 && VAR=$1 || echo "need a number"

何か助けて?

ベストアンサー1

1 つの方法は、次のように正規表現を使用することです。

re='^[0-9]+$'
if ! [[ $yournumber =~ $re ]] ; then
   echo "error: Not a number" >&2; exit 1
fi

値が必ずしも整数ではない場合は、正規表現を適切に修正することを検討してください。たとえば、次のようになります。

^[0-9]+([.][0-9]+)?$

...または、符号付きの数字を処理するには:

^[+-]?[0-9]+([.][0-9]+)?$

おすすめ記事