'\" te .\" Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. .\" Copyright 1989 .\" Portions Copyright (c) 1982-2007 AT&T Knowledge Ventures .TH trap 1 "2011 年 7 月 12 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 trap, onintr \- (ハードウェア) シグナルに応答するためのシェル組み込み関数 .SH 形式 .SS "sh" .LP .nf \fBtrap\fR [\fIargument\fR \fIn\fR [\fIn2\fR]...] .fi .SS "csh" .LP .nf \fBonintr\fR [\fB-|\fR \fIlabel\fR] .fi .SS "ksh88" .LP .nf \fB*trap\fR [\fIarg\fR \fIsig\fR [\fIsig2\fR...]] .fi .SS "ksh" .LP .nf \fB+trap\fR [\fB-p\fR] [\fIaction\fR \fIcondition\fR...] .fi .SH 機能説明 .SS "sh" .sp .LP \fIargument\fR が示す \fBtrap\fR コマンドを、シェルが数値形式または 名前形式で指定されているシグナル(\fIn\fR) を受信した時に読み取り、実行します。(注: \fIargument\fR は、トラップ設定時とトラップ取り出し時に 1 度ずつ検索されます。)トラップコマンドは、シグナル番号または対応するシンボリック名の順序で実行されます。現在のシェルへの入力時に無視されたシグナルにトラップを設定しようとしても無効となります。シグナル 11 ( メモリフォールト ) にトラップを指定しようとすると、エラーになります。\fIargument\fR を省略すると、 \fIn\fR のトラップはすべてその元の値に再設定されます。\fIargument\fR が NULL 文字列の場合、 シェルおよびシェルが呼び出すコマンドは、 このシグナルを無視します。\fIn\fR が \fB0\fR の場合、 \fIargument\fR が示すコマンドはシェル終了時に実行されます。引数なしの \fBtrap\fR コマンドは、コマンドの一覧を各々が対応しているシグナル番号とともに表示します。 .SS "csh" .sp .LP \fBonintr\fR は割り込み時のシェルのアクションを制御します。引数を指定しないと、\fBonintr\fR はデフォルトのアクションを復元します (すなわち、シェルはシェルスクリプトを終了して、端末のコマンド入力レベルに戻ります)。\fB–\fR 引数を指定すると、シェルはすべての割り込みを無視します。\fIlabel\fR 引数を指定すると、割り込みを受信するか割り込みのために子プロセスが終了したときに、シェルは \fBgoto\fR\fI label\fR を実行します。 .SS "ksh88" .sp .LP \fBtrap\fR は \fIarg\fR を \fIsig\fR が示すシグナルをシェルが受信したときに読み取られ、実行されるコマンドとして使用します。\fIarg\fR は、トラップ設定時とトラップ取り出し時に 1 度ずつ検索されます。各 \fIsig\fR は、数値またはシグナルの名前です。\fBtrap\fR コマンドは、シグナル番号の順序で実行されます。現在のシェルへの入力時に無視されたシグナルにトラップを設定しようとしても無効となります。\fIarg\fR を省略するか、 または \fB–\fR と指定する場合、各 \fIsig\fR 用のトラップはすべてその元の値に再設定されます。\fIarg\fR が NULL 文字列 (\fB""\fR などの空の文字列) の場合、シェルおよびシェルが呼び出すコマンドは、このシグナルを無視します。\fIsig\fR が \fBERR\fR の場合は、コマンドが 0 以外の終了ステータスで終わると必ず \fIarg\fR が実行されます。\fIsig\fR が \fBDEBUG\fR の場合は、各コマンドのあとで \fIarg\fR が実行されます。\fIsig\fR が \fB0\fR または \fBEXIT\fR で、トラップが関数の外側で設定されている場合、シェルの終了時に \fIarg\fR が示すコマンドが実行されます。\fB\fR引数なしの \fBtrap\fR コマンドは、コマンドの一覧を各々が対応しているシグナル番号とともに表示します。 .sp .LP このマニュアルページでは、1 つまたは 2 つのアスタリスク (*) が先頭に付加されている \fBksh88\fR(1) コマンドは、次の方法で特殊な処理を受けます。 .RS +4 .TP 1. コマンドが完了しても、コマンドの直前の変数代入リストは依然として有効です。 .RE .RS +4 .TP 2. 入出力のリダイレクトは変数代入後に行われます。 .RE .RS +4 .TP 3. エラーが発生すると、それを含むスクリプトは中止されます。 .RE .RS +4 .TP 4. 変数代入形式で、** から始まるコマンドに続くワードは、変数代入と同一の規則で展開されます。つまり、チルド置換は \fB=\fR 符号のあとに実行され、ワード分割とファイル名生成は実行されません。 .RE .SS "ksh" .sp .LP \fBtrap\fR は、シグナル受信などの状況が発生したときに行われるアクションを定義する特別な組み込みコマンドです。\fBtrap\fR を使用すると、現在のトラップ設定を標準出力に表示することもできます。 .sp .LP \fIaction\fR が \fB-\fR の場合、\fBtrap\fR は各状況をデフォルト値にリセットします。\fIaction\fR が空の文字列の場合は、各状況が発生してもシェルは無視します。それ以外の場合、引数 \fIaction\fR は該当する状況のいずれかが発生したときに \fBeval\fR によって処理された場合と同様に、シェルによって読み取られ実行されます。トラップのアクションは、指定された各状況に関連付けられた以前のアクションよりも優先されます。値 \fB$?\fR はトラップの実行によって変更されません。 .sp .LP \fIcondition\fR には、シグナルの名前または番号、あるいは次のいずれかを指定できます。 .sp .ne 2 .mk .na \fB\fBEXIT\fR\fR .ad .RS 9n .rt シェルの終了時に、このトラップを実行します。予約語 \fBfunction\fR を含む関数内に定義した場合は、関数が復帰するときに呼び出し元の環境でトラップを実行します。トラップのアクションは、関数の呼び出し時の値に復元されます。 .RE .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 9n .rt \fBEXIT\fR と同じです。 .RE .sp .ne 2 .mk .na \fB\fBDEBUG\fR\fR .ad .RS 9n .rt 各単純コマンドが実行される前 (ただし、引数が展開されたあと) に実行します。 .RE .sp .ne 2 .mk .na \fB\fBERR\fR\fR .ad .RS 9n .rt \fBset -e\fR によりシェルが終了するたびに実行します。 .RE .sp .ne 2 .mk .na \fB\fBKEYBD\fR\fR .ad .RS 9n .rt 端末装置からキー入力されたときに実行します。 .RE .sp .LP シグナル名は大文字と小文字の区別がなく、\fBsig\fR 接頭辞はオプションです。非対話型シェルの開始時に無視されたシグナルは、トラップもリセットもできません。ただし、トラップやリセットを行なってもエラーは報告されません。1、2、3、6、9、14、15 以外のシグナル番号の使用は移植できません。 .sp .LP trap は特殊な組み込みコマンドですが、シェルが認識しない状況を指定すると、トラップがゼロ以外の終了ステータスで終了します。ただし、呼び出し側のシェルは終了しません。\fB\fR .sp .LP アクションまたは状況を指定しない場合は、現在のトラップ設定がすべて標準出力に書き込まれます。 .sp .LP \fBksh\fR の \fBtrap\fR 組み込みコマンドでは、次のオプションがサポートされています。 .sp .ne 2 .mk .na \fB\fB-p\fR\fR .ad .RS 6n .rt 現在のトラップを再作成できるように、現在のトラップがシェルへの入力として処理可能な形式で出力されます。 .RE .sp .LP \fBksh\fR の trap の組み込みコマンドは、次の値のいずれかで終了します。 .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 正常終了。 .RE .sp .ne 2 .mk .na \fB>\fB0\fR\fR .ad .RS 6n .rt エラーが発生した。 .RE .sp .LP このマニュアルページでは、1 つまたは 2 つの \fB+\fR (プラス符号) が先頭に付加されている \fBksh\fR(1) コマンドは、次のような特殊な処理を受けます。 .RS +4 .TP 1. コマンドが完了しても、コマンドの直前の変数代入リストは依然として有効です。 .RE .RS +4 .TP 2. 入出力のリダイレクトは変数代入後に行われます。 .RE .RS +4 .TP 3. エラーが発生すると、それを含むスクリプトは中止されます。 .RE .RS +4 .TP 4. これらは有効な関数名ではありません。 .RE .RS +4 .TP 5. 変数代入形式で、\fB++\fR を先頭に持つコマンドに続くワードは、変数代入と同一の規則で展開されます。つまり、チルド置換は \fB=\fR 符号のあとに実行され、ワード分割とファイル名生成は実行されません。 .RE .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/core-os .TE .SH 関連項目 .sp .LP \fBcsh\fR(1), \fBeval\fR(1), \fBexit\fR(1), \fBksh\fR(1), \fBksh88\fR(1), \fBsh\fR(1), \fBattributes\fR(5)