シェルでの正規表現比較

シェルで正規表現を使って引数の値とかチェックしたい。
一度やって忘れてたので記録しておく。

bashの場合

bashさんは正規表現比較方法があるので楽ちん

if [[ "$INPUT" =~ ^[0-9]+$ ]]; then
    echo 'number!!';
fi

bashさんかわいいよbashさん

shの場合

基本的にbashは入ってるのでbashでいいと思うんだけど、
お作法的にshで書くことになってるとも思う
もう古い考えな気がしないでもないけど

shはbashのようにできない臭いのでexprでやってたっぽい

if [ `expr "$INPUT" : "^[0-9]*$"` -gt 0 ]; then
    echo 'number!!'
fi

exprでマッチしている数を出して0と比較してる。
ただ、どうやらあんまり複雑なことはできないらしく
{min, max}を使うことはできないみたい。
複雑なものに対しては違う方法を探したほうがいいかも。