日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
EXPR(1) FreeBSD 一般コマンドマニュアル EXPR(1) 名称 expr -- 式を評価する 書式 expr [-e] expression 解説 expr ユーティリティは、expression (式) を評価し、結果を標準出力に書き込み ます。 すべての演算子とオペランドは、個別の引数として渡されなければなりません。 演算子のいくらかは、コマンドインタプリタに特別な意味があり、したがって適 切に引用されなければなりません。すべての整数オペランドは、10 進数として解 釈され、(厳密でない構文解析が FreeBSD の expr の前のバージョンとの後方互 換性のために有効にされていないなら) 1 つ以上の数字が続いた省略可能な先導 するマイナス記号だけから成らなければなりません。 算術演算は、C の intmax_t データ型 (利用可能な最も大きい符号付き整数型) にしたがって範囲がある符号付き整数計算を使用して実行されます。すべての変 換と演算は、オーバフローがないかどうかチェックされます。プログラムのオー バフローの結果は、stdout へのエラーメッセージとエラー状態を付けて、終了し ます。 -e オプションは、以下で詳しく述べられるように、後方互換性の振る舞いを有効 にします。 演算子は、増加している優先度の順序で以下にリストされます。すべては、左結 合です。等しい優先度がある演算子は、シンボル `{' と `}' 内でグループ化さ れます。 expr1 | expr2 空の文字列でもなく、また 0 でもなければ、expr1 の評価の値を返しま す。そうでなければ、空の文字列でなければ、expr2 の評価の値を返し ます。そうでなければ、0 を返します。 expr1 & expr2 いずれかの式も空の文字列または 0 に評価しないなら、expr1 の評価を 返します。そうでなければ、0 を返します。 expr1 {=, >, >=, <, <=, !=} expr2 両方の引数が整数であるなら、整数の比較の結果を返します。そうでな ければ、地域特有の照合順序を使用する文字列の比較の結果を返しま す。各比較の結果は、指定された関係が真であるなら、1 で、関係が偽 であるなら、1 です。 expr1 {+, -} expr2 整数値の引数の追加または減産の結果を返します。 expr1 {*, /, %} expr2 整数値の引数の乗算、整数除算または剰余の結果を返します。 expr1 : expr2 ``:'' 演算子は、基本的な正規表現でなければならない、expr1 と expr2 を照合します。正規表現は、暗黙の ``^'' で文字列の最初に固定 されています。 照合が成功し、パターンが少なくとも 1 つの正規表現の部分表現 ``\(...\)'' を含んでいるなら、``\1'' に対応している文字列が返され ます。そうでなければ、照合演算子は、一致している文字の数を返しま す。照合が失敗し、パターンが正規表現の部分表現を含んでいるなら、 空の文字列が返されます。そうでなければ、0 が返されます。 括弧は、通常の方法でグループ化のために使用されます。 expr ユーティリティは、演算子であるかもしれない引数とオペランドであるかも しれない引数の間の字句解析的な区別を行いません。演算子と字句解析的に同一 であるオペランドは、構文エラーと見なされます。回避方法については、以下の 使用例を参照してください。 一般的に expr コマンドの構文は、歴史的であり、使いやすいとはいえません。 新しいアプリケーションは、expr ではなくシェルの算術演算を使用するように勧 められます。 以前の実装との互換性 FreeBSD 4.x 互換性が有効にされないなら、expr のこのバージョンは、マイナス 記号で始まる先導する引数がプログラムへのオプションと見なされることを必要 とする、POSIX ユーティリティ構文ガイドを守ります。標準の -- 構文は、この 解釈を防止するために使用されます。しかしながら、expr の多くの歴史的な実装 は、FreeBSD の以前のバージョンのものを含めて、この構文を許しません。正し い解釈を保証するための移植性のある方法については、以下の使用例を参照して ください。(``expr'' の utility 引数を付けた) check_utility_compat(3) 関数 は、後方互換性のモードが有効にされるべきかどうかを決定するために使用され ます。この機能は、expr が移植性がない使用法を避けるために、簡単に作り直す ことができない複雑なスクリプトで使用されるとき、移行とデバックを補助する ような使用を目的としています。また、後方互換性のモードを有効にすると、こ れは、FreeBSD の expr の歴史的な振る舞いに一致するので、-e オプションを暗 黙のうちに有効にします。このオプションは、数値の構文解析を厳密でないよう にし、先導する空白類と省略可能な先導するプラス記号を許可します。さらに、 空のオペランドには、数値の文脈で 0 の値を意味します。また、歴史的な理由 で、環境変数 EXPR_COMPAT を定義すると、後方互換性モードを有効にします。 環境変数 EXPR_COMPAT 設定するなら、後方互換性モードを有効にします。 終了ステータス expr ユーティリティは、次の値の 1 つで終了します: 0 式は、空の文字列でも 0 でもありません。 1 式は、空の文字列か、または 0 です。 2 式が無効です。 使用例 • sh(1) 構文の) 次の例は、変数 a に 1 を加えます: a=$(expr $a + 1) • a の値が負の数であるなら、これは、失敗します。expr コマンドへのオプ ションと解釈されることから a の負の値を保護するために、それは、次のよ うに式を再構成することができます: a=$(expr 1 + $a) • より一般的に、ことによると負になる値を括弧で囲みます: a=$(expr \( $a \) + 1) • シェル算術計算で、エスケープは、必要ではありません: a=$((a + 1)) • この例は、変数 a に格納されたパス名のファイル名の部分を印刷 (表示) し ます。a は、パス / を表すかもしれないので、それが除算の演算子と解釈さ れることを防ぐ必要があります。// 文字は、このあいまいさを解決します。 expr "//$a" : '.*/\(.*\)' • 最近の sh(1) 構文で、 "${a##*/}" は、同じ値に拡張します。 次の例は、変数 a の文字の数を出力します。再び、a がハイフンで始まるかもし れないなら、それは、expr への演算子として解釈されることを防ぐ必要があり、 a は、演算子として解釈されるかもしれません。 • これのすべてを扱うために、複雑なコマンドが必要です: expr \( "X$a" : ".*" \) - 1 • 最近の sh(1) 構文で、より容易に、これを行うことができます: ${#a} は、必要な数に拡張します。 関連項目 sh(1), test(1), check_utility_compat(3) 規格 expr ユーティリティは、後方互換性モードが有効にされいなら、IEEE Std 1003.1-2008 (``POSIX.1'') に適合しています。 後方互換性モードは、数値引数の厳密でないチェックを実行します: • 空のオペランドの文字列は、0 として解釈されます。 • 先導する空白類そして/または、ほかの有効な正の数値オペランドの前のプラ ス記号は、許可され、そして、無視されます。 拡張演算範囲とオーバフローチェックは、符号付き long の使用が、未定義の動 作を与える場合の結果に相違が生じるだけであるので、演算が符号付き long を 使用して行われるという POSIX の要件と衝突しません。 POSIX 規格にしたがって、文字列引数 length, substr, index または match の 使用は、未定義の結果を生じます。expr のこのバージョンでは、これらの引数 は、それらのそれぞれの文字列値として単に処理されます。 -e フラグは、拡張機能です。 歴史 expr ユーティリティは、Programmer's Workbench (PWB/UNIX) ではじめて登場し ました。expr のパブリックドメインバージョンは、386BSD 0.1 で登場し、Pace Willisson <pace@blitz.com> によって書かれました。 作者 Pace Willisson <pace@blitz.com> による初期の実装は、J.T. Conklin <jtc@FreeBSD.org> によって大部分が書き直されました。 FreeBSD 11.2 October 5, 2016 FreeBSD 11.2