AIX Is not uniX ?
expr,edコマンド
シェルスクリプトで引数を正規表現でチェックする事になった。expr
で良いだろうと思ったが、どうもLinuxと勝手が違うので調べた。
Expression1 の計算結果を Expression2 の計算結果から得られた正規表現パターンと比較します。正規表現の構文は ed コマンドの場合と同じ
という事で、AIXのexpr
はed
コマンドの正規表現らしい。ed
で使える正規表現のところを何度見ても1個以上を表す+
が無い((正確には\+
とエスケープする必要あり))。Linuxと違うわけだ。\{1,\}
の表現は使えそうなので何とかなったが。
if -z $1 || ! expr $1 : "[0-9a-zA-Z]\{1,\}$" >/dev/null then エラー処理 fi
もちっとマシな方法は無いのか...。built-inコマンドで正規表現使えると良いだけどなぁ。素直にPerlを使えって事かもしれないが、後々のメンテナンス等を考えると嫌われるのよね*1。