プロが教える店舗&オフィスのセキュリティ対策術

#!/bin/sh
case $1 in
[1-9])echo $1;;
[1-9]*10+[1-9])echo $1;;
*)echo "エラー";;
esac

シェルの第一引数が1~99だった場合、その引数を表示するというものを作りたいのですが、
これだと二桁の数字を入力した際に*)echo "エラー";;の方へ行ってしまいます。
これではだめでしょうか?
またもしcase文でこういった事ができるのなら今は2行に渡って書いていますが、
これを1行にして書くことなどはできるのでしょうか?

A 回答 (1件)

「1~99」の中に 50 なんてのは入る?


case は文字列として (厳密にはファイル名として) 比較してるよん.
だから 2つ目は
[1-9][0-9])
じゃないとダメ.
まあ, | でパターンをつないで
[1-9]|[1-9][0-9]) echo $1;;
でいいんだろうけど.
    • good
    • 1
この回答へのお礼

なるほど!そういえば一桁目0のことをあまり考えてませんでした。
そういうことでしたか・・・。
パターンのつなぎ方もとても参考になりました。
ありがとうございました。m(_ _)m

お礼日時:2009/03/03 12:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!