• 締切済み

【ど素人】シェルスクリプトで、引数の形式チェック【ヘルプミー】

bashで書いたシェルスクリプトで、 引数を正規表現を用いて入力形式チェックしたいと思っています。 いい方法が思いつかず、とりあえず動作はする以下のスクリプトを 組みました。 echo $1 | grep "正規表現" > /dev/null if [ $? -eq 0 ]; then # あってるときの処理 else # ちがうときの処理 fi どうも、他に良い方法がある気がしてなりませんが、 どうでしょうか? 良い方法があれば教えてください。 また、(ないとは思うけど)この方法が一般的ということであれば、 その旨教えていただけるとありがたいです。 よろしくお願いします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>引数のチェックは日付形式のチェックを行うつもりでしたので、 どのような形式かに依りますが、 date -d 20070930 date -d 2007/09/31 とかをやってみてそれを元にすると、もっといいやり方が出来るかもしれません。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

正規表現でなくて、ファイルマッチ( ? が任意の一文字、* が任意の0文字以上、| がまたは、[]は正規表現と同じ意味) でよければ、case を使います。 たとえば、1-2文字の数字かどうかなら case "$1" in [0-9]|[0-9][0-9]) 合ってるときの処理 ;; *) 違うときの処理 ;; esac あとは、文字列処理の時には、expr が便利です。ファイルマッチでは不足で、正規表現が必要なときにはこれを使います。 if expr "$1" : 正規表現 >/dev/null then 合ってるときの処理 else 違うときの処理 fi

btom0106
質問者

お礼

なるほど!そういう方法があったんですね。 引数のチェックは日付形式のチェックを行うつもりでしたので、 exprを使って処理してみようと思います。 ありがとうございました!!

関連するQ&A