[解決済み] 同一信号に対する複数のBashトラップ
2023-09-05 21:25:35
質問
を使用する場合
trap
コマンドを Bash で実行すると、以前の
trap
を置き換えます。
複数の
trap
を発生させる方法はありますか?
どのように解決するのですか?
編集してください。
質問を読み違えたようです。答えは簡単です。
handler1 () { do_something; }
handler2 () { do_something_else; }
handler3 () { handler1; handler2; }
trap handler3 SIGNAL1 SIGNAL2 ...
オリジナルです。
コマンドの最後に複数のシグナルを列挙するだけです。
trap function-name SIGNAL1 SIGNAL2 SIGNAL3 ...
特定のシグナルに関連する関数を見つけるには、次のようにします。
trap -p
:
trap -p SIGINT
同じ関数で処理される場合でも、それぞれのシグナルを別々にリストアップしていることに注意してください。
このようにすることで、既知のシグナルを指定して、追加のシグナルを追加することができます。
eval "$(trap -p SIGUSR1) SIGUSR2"
これは、同じ関数で処理されている他のシグナルがある場合でも動作します。言い換えれば、ある関数がすでに3つのシグナルを処理していたとします。既存の1つを参照し、さらに2つを追加するだけで、さらに2つを追加することができます(閉じた引用符のすぐ内側には、1つだけが上に表示されています)。
Bash >= 3.2 を使用している場合、シグナルを与えられた関数を抽出するために、このようなことを行うことができます。他の単一引用符が現れる可能性があるため、完全に堅牢ではないことに注意してください。
[[ $(trap -p SIGUSR1) =~ trap\ --\ \'([^\047]*)\'.* ]]
function_name=${BASH_REMATCH[1]}
それから、関数名などを使って、必要であればトラップコマンドを一から作り直すことができます。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] パラメータを取るBashのエイリアスを作る?
-
[解決済み] 標準エラー出力に出力するエコー
-
[解決済み] 好ましいBashのシェバングとは?
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] 直前のbashコマンドの引数を呼び出すには?
-
[解決済み】bash/sedスクリプトを使用してテキストファイルの最初の行を削除するにはどうすればよいですか?
-
[解決済み] ディレクトリ内のファイルに対して、ファイル名のみ(パスなし)をエコーします。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 現在の日付と時刻を句読点を使わずに表示する
-
[解決済み] コマンドライン・ターミナルでの乗算
-
[解決済み] set -u` による Bash による空の配列展開
-
[解決済み] Bashでファイル名を一括変更する
-
[解決済み] MSYSでフォルダを閲覧する
-
[解決済み] ファイルを分割する方法。重複
-
[解決済み] bashでファイル(引数)を編集しているコマンドを "その場 "で実行するには?
-
[解決済み] Bash で +x を表示させずに設定する
-
[解決済み] ディレクトリ内のファイルに対して、ファイル名のみ(パスなし)をエコーします。
-
[解決済み] シェルでの try catch finally の書き方