質問があります。
If [[ * ]]
then
continue
else
exit 1
fi
-d 3
たとえば、私のスイッチの引数が有効な正の10進整数(からの1つ以上のASCII文字シーケンス)であるかどうかをテストしたいと思います。それ以降は数字のみ可能です。他のすべてはひどいです。代わりに何を入れるべきかわかりません。0
9
-d
[0,infinity)
*
助けてください?-d
位置の後のパラメータです$2
。
答え1
質問と意見では負ではなく整数で$2
なければなりません。
if [[ "$2" =~ ^[0-9]+$ ]]
then
...
また、if
小文字で書かれていることに注意してくださいi
。
使用しているBashのバージョンが正規表現(<3.x)をサポートしていない場合は、次のようにgrep
困難な作業を実行できます。
if printf "%s\n" "$2" | grep -qE '^[0-9]+$'
then
...
しかし見てくださいスティーブンのコメントこのアプローチには注意があるかもしれません。
答え2
Bourneのようなシェルの場合(つまり、1970年代にさかのぼる):
case $2 in
"" | *[!0-9]*) echo >&2 not OK; exit 1;;
*) echo OK;;
esac