exprコマンドについてメモ
12月 27, 2009
exprコマンドはシェルビルトインではなく外部コマンドであるが、シェルスクリプトで
使用されることも多いと思われるので、メモしておく。
exprコマンドは与えられた文学列の中に、与えられた正規表現にマッチする部分があるかどうか」
をチェックする。基本的な書式は、「expr 文学列 : 文学列(または正規表現の条件)」となる。
exprコマンドでは文学列と正規表現の比較は常に文学列の先頭からしか行われないことに注意。
以下は、文字列の比較してマッチした文学数を返している。

文字列から正規表現にマッチした部分を抜き出す、という使い方もある。
取り出したい部分を以下のようにバックスラッシュとカッコで指定する。

上のうち2つ目の結果で「bc」が抜き出されていないのは、比較の評価が文字列の先頭からしか
行われないため。文学列の途中から評価させたい時は、3つ目の例のように任意の文字列を
表す「.*」を指定するとよい。
シェルスクリプトでより利用されると思われるのが、あるコマンドを実行させた時の
コマンドの出力表示から必要な部分のみ取り出す、といった使い方。
以下はdateコマンドの出力結果から、「何時:何分」の部分だけを取り出している。

exprコマンドはまた、整数演算を行う。
この場合引数に数式を指定すると、計算結果を標準出力へ返す。

「expr n * n」はご覧のようにエラーとなるので、バックスラッシュで「*」をエスケープする。
Categories: shell