名前 | 形式 | 機能説明 | オプション | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目
fmtmsg は、メッセージの分類構成要素に基づいて、書式付きメッセージを stderr またはコンソールに書き出します。
書式付きメッセージは、 標準構成要素で構成されます (「環境」の項の環境変数 MSGVERB を参照)。このうち分類構成要素とサブクラス構成要素の 2 つは、標準メッセージの一部としては表示されません。 これらはメッセージの発行元を定義し、書式付きメッセージの表示先を指定するために使われます。
メッセージ発行の原因となった状態の種類を表します。 class としては以下のキーワードが指定できます。
状態の発生元はハードウェア
状態の発生元はソフトウェア
状態の発生元はファームウェア
メッセージをさらに定義しメッセージの表示先を示すための、一連のキーワードを subclass に指定します。 キーワード間はコンマで区切ります。以下のキーワードが指定可能です。
状態の発生はアプリケーション中に起因している。このキーワードは util および opsys と同時には指定できない。
状態の発生はユーティリティ中に起因している。このキーワードは appl および opsys と同時には指定できない。
状態の発生はカーネル中に起因している。このキーワードは appl および util と同時には指定できない。
アプリケーションをその状態から回復させる。このキーワードは nrecov と同時には指定できない。
アプリケーションをその状態から回復させない。このキーワードは recov と同時には指定できない。
標準エラーストリーム stderr にメッセージを書き出す。
システムコンソールにメッセージを書き出す。 print と console を両方指定することも可能。
メッセージの発行元を指定します。
エラーの重大度を指定します。標準レベルの重大度として severity に指定できるキーワードとその意味を以下に説明します。
アプリケーションが重大なエラーを検出し、処理を中断している。
アプリケーションがエラーを検出した。
アプリケーションが、通常は起こらない状態を検出した。エラーの可能性がある。
アプリケーションは、エラーではない単なる情報を通知している。
メッセージの識別子を含んだ文字列を指定します。
エラー回復処理の第 1 ステップを述べた文字列を指定します。 action 引数は、それ全体が 1 つの文字列であると正しく解釈されるように 記述しなければなりません。 fmtmsg は、この action で指定した文字列の前に TO FIX: を付加します。
状態を表すテキスト文字列を指定します。text 引数は、それ全体が 1 つの文字列であると正しく解釈されるように 記述しなければなりません。
次に示す fmtmsg は、標準メッセージ形式で完全なメッセージを生成し、それを標準エラーストリームに書き出す例です。
example% fmtmsg -c soft -u recov,print,appl -l UX:cat \ -s error -t UX:cat:001 -a "refer to manual" "invalid syntax" |
これを実行すると次の出力が得られます。
UX:cat: ERROR: invalid syntax TO FIX: refer to manual UX:cat:138 |
環境変数 MSGVERB が次のように設定されているとします。
MSGVERB=severity:text:action |
このとき上記例 1 の fmtmsg コマンドを実行すると、以下の出力が得られます。
ERROR: invalid syntax TO FIX: refer to manual |
環境変数 SEV_LEVEL が次のように設定されているとします。
SEV_LEVEL=note,5,NOTE |
このとき次の fmtmsg コマンドを実行します。
example% fmtmsg -c soft -u print -l UX:cat -s note -a "refer to manual" "invalid syntax" |
以下の出力が得られます。
NOTE: invalid syntax TO FIX: refer to manual |
また、stderr にメッセージが出力されます。
fmtmsg の動作は、 2 つの環境変数 MSGVERB と SEV_LEVEL により制御されています。MSGVERB はシステム管理者によって、システム用の /etc/profile 中に設定されています。ユーザーは、このシステムに設定された値以外の MSGVERB 値を使用することができます。その方法としては、ユーザーの .profile ファイル中にある MSGVERB をリセットする、現在のシェルセッション内で値を変更する、の 2 通りがあります。SEV_LEVEL はシェルスクリプト中で使用できます。
メッセージを stderr に出力するとき、どの構成要素を選択すべきかを MSGVERB が fmtmsg に伝えます。MSGVERB の値は一連のキーワードで、キーワード間はコロンで区切ります。MSGVERB は次に示す形式で設定できます。
MSGVERB=[keyword[:keyword[:...]]] export MSGVERB |
keywords としては、 label 、 severity 、 text 、 action 、 tag が指定できます。MSGVERB が構成要素用のキーワードを含んでいて、その構成要素の値が NULL 文字列ではない場合、 fmtmsg はメッセージを stderr に書き出す際にその構成要素をメッセージ中に挿入します。MSGVERB が構成要素用のキーワードを含んでいなければ、 その構成要素はメッセージ表示には含まれません。上記のキーワードは任意の順序で指定できます。MSGVERB が定義されていない、値が NULL 文字列である、値の形式が正しくない、上記のもの以外のキーワードを含んでいる、といった場合には、fmtmsg はすべての構成要素を選択します。
MSGVERB は、どの構成要素を選択するかを表しますが、 これは表示用のメッセージに関してだけです。コンソールへ出力されるメッセージには、常にすべての構成要素が含まれます。
SEV_LEVEL は重大度レベルを定義し、fmtmsg で使用できるように印刷文字列をそれらのレベルに対応させます。なお以下に示す標準重大度レベルは、変更することはできません。これ以外のレベルは、定義したり、再定義したり、削除したりすることが可能です。
(対応するものなし)
HALT
ERROR
WARNING
INFO
SEV_LEVEL は次の形式で設定できます。
description は 3 つのフィールドで構成され、フィールド間は コンマで区切ります。
SEV_LEVEL= [description[:description[:...]]] export SEV_LEVEL |
description=severity_keyword,level,printstring
最初のフィールド severity_keyword は、 fmtmsg の -s severity オプションで指定できるキーワードの いずれかと同じ文字列です。
次のフィールド level は、評価の結果が正の整数となる文字列です。ただしその整数値は、標準重大度レベルとして予約されている 0 、 1 、 2 、 3 、または 4 であってはなりません。キーワード severity_keyword が指定されていると、level の値は重大度の値として fmtmsg(3C) に渡されます。
3 番目のフィールド printstring は、前述の重大度値 level が用いられる際に fmtmsg が標準メッセージ形式で使用する文字列です。
SEV_LEVEL が定義されていない場合、またはその値が NULL 文字列の場合には、デフォルトの重大度レベル値だけが使用可能です。コロンで区切られた一連の description の中に、その内容がコンマで区切られた 3 つのフィールドで構成されていないものがあるとき、または第 2 フィールドの値が正の整数に評価されないものがあるとき、その description は無視されます。
以下の終了ステータスが返されます。
指定された機能はすべて正常に実行された
コマンド中に、構文の誤り、不正なオプション、 またはオプションに対する不正な引数が検出された
機能は部分的に正常終了したが、メッセージは stderr に出力されなかった
機能は部分的に正常終了したが、メッセージは システムコンソールに出力されなかった
要求された機能は 1 つも正常に終了しなかった
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWcsu |