シェルスクリプトへの引数が10進表記法で整数(例えば、負ではない整数:0、1、2、3、…、17、…、42、…などですが、3.1416または-5ではない)であることを確認したいと思います。 (したがって、0x11または0x2Aとは異なります)。正規表現を条件としてCaseステートメントを作成する方法(数値一致)?私はいくつかの異なるアプローチを試しました(例:[0-9]+
または^[0-9][0-9]*$
)。そのどれも機能しません。次の例に示すように、有効な数字はその数字をキャプチャしてワイルドカードと一致するように設計された数値正規表現を介して渡されます *
。
i=1
let arg_n=$#+1
while (( $i < $arg_n )); do
case ${!i} in
[0-9]+)
n=${!i}
;;
*)
echo 'Invalid argument!'
;;
esac
let i=$i+1
done
出力:
$ ./cmd.sh 64
Invalid argument!