シェルスクリプトで正規表現でのマッチングを使いたい場合,少しぐぐってみると case
文を使えという内容のものがよくヒットするようですが,expr
コマンドでも正規表現が使えます.
#!/bin/sh
if expr "aaabbc" : "b+c$" > /dev/null; then
echo "hoge"
fi
# => hoge
正規表現を用いた場合,expr
はマッチした位置や()
でグループ化した結果を出力するので,要らない場合は /dev/null
に捨てます.
ちなみに, zsh
では [[ ]]
を用いて自然に正規表現が書けます.
#!/usr/bin/zsh
if [[ "aaabbc" =~ "b+c$" ]]; then
echo "hoge"
fi
bash
の 3.1 以降ではクォートを付けてはいけないらしいです(コメント参照)
情報ありがとうございます.