幼稚園時代「何組」でしたか?

表題通り、パラメータで渡された文字が数値でない場合にエラーとしようと思っております。正規表現[0-9]等を使って行いたいと思っておりますが、一番シンプルだと思われる方法を教えて下さい。

A 回答 (2件)

手元にunixが無いので検証できてませんが、


X=`expr "$PARM" : '\([0-9][0-9]*\)'`
if test "$PARM" = "$X"
then num=true
else num=false
fi
最初のexprでは、先頭から数字が続いた部分がXにセットされます。数字以外のものが含まれていれば、元の文字列と不一致になるはずです。

あと、桁数に上限があれば、これのほうがわかりやすいかな。
case "$PARM" in
[0-9]) num=true ;;
[0-9][0-9]) num=true ;;
[0-9][0-9][0-9]) num=true ;;
[0-9][0-9][0-9][0-9]) num=true ;;
*) num=false ;;
esac
    • good
    • 0
この回答へのお礼

ありがとうございました。参考にさせて頂きます。

お礼日時:2004/03/05 12:17

正規表現を使うことが必須でなければ、testのエラーを使うという手もありそうです。

testの仕様にもよると思いますが・・・

/usr/bin/test "$PARAM" -eq 0 > /dev/null 2>&1 ; if [ $? -gt 1 -o "$PARAM" = "" ] ; then echo error ; fi
    • good
    • 0
この回答へのお礼

ありがとうございました。参考にさせて頂きます。

お礼日時:2004/03/05 12:17

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