シェルでの正規表現というと expr を使う方法が有名だが、これは古い方法で、対応している正規表現も少ないそうだ。事実、わたしが使っている程度の簡素なものでも対応していなかった……PerlやRubyでごりごり使っている諸賢だと悲鳴ものだろう。
そこで以下の方法を使う。かなりわかりやすいね。
#!/bin/sh PTN="ABCDEFGHIJKLCDMYMGOPCUGGOP" REG="(AB|KL)[CD]D"
if [[ ${PTN} =~ ${REG} ]];then echo OK else echo NG fi