[解決済み] どのように呼び出されても、全ての実行を中断するBash関数を書く方法はありますか?
2023-02-11 10:14:10
質問
Bash関数で"exit 1"ステートメントを使ってスクリプト全体を終了させていましたが、問題なく動作しています。
function func()
{
echo "Goodbye"
exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
のように呼び出されても、仕事をしないことに気がつきました。
res=$(func)
サブシェルを作成し、"exit 1"で主シェルではなく、そのサブシェルを中止することは理解したのですが...。
しかし は、どのように呼び出されたかに関係なく、実行全体を中止する関数を書く方法はありますか? 私はちょうど本当の戻り値(関数によってエコーされる)を取得する必要があります。
どのように解決するのですか?
何を
可能
のトップレベルのシェルを登録することです。
TERM
シグナルを送信して終了し、その後
TERM
をトップレベルのシェルに送ります。
#!/bin/bash
trap "exit 1" TERM
export TOP_PID=$$
function func()
{
echo "Goodbye"
kill -s TERM $TOP_PID
}
echo "Function call will abort"
echo $(func)
echo "This will never be printed"
つまり、この関数が送信する
TERM
シグナルをトップレベルのシェルに送り返し、それをキャッチして提供されたコマンドを使用して処理します。
"exit 1"
.
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashスクリプトでファイルへのheredocを書き込むには?
-
[解決済み] Bashスクリプトで、ある条件が発生したらスクリプト全体を終了させるにはどうしたらいいですか?
-
[解決済み] BashスクリプトからOSを検出する方法は?
-
[解決済み] オプションの入力引数を取るbashスクリプトを書くには?
-
[解決済み] Bash関数から文字列値を返す方法
-
[解決済み] スクリプトの実行に関連したファイルの参照
-
[解決済み] bashでalt + numericを押すと(arg [numeric])と出ますが、これは何でしょう?
-
[解決済み] ディレクトリ内のファイルに対して、ファイル名のみ(パスなし)をエコーします。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] bashスクリプトでset -eはどういう意味ですか?
-
[解決済み] bashのループリストで空白をエスケープするには?
-
[解決済み] Cronジョブおよびランダム時間(指定時間内
-
[解決済み] シェルスクリプトで行末にセミコロンは不要?重複
-
[解決済み] bashでスクリプトの中で宣言された変数をリストアップする方法は?
-
[解決済み] ディレクトリ内のファイルに対して、ファイル名のみ(パスなし)をエコーします。
-
[解決済み] bashでファイルが存在するかどうかをテストするためのWhileループ
-
[解決済み] sed を使ってファイルの名前を大量に変更する
-
[解決済み] Bashでforループを書くには?
-
[解決済み] 引用符で囲まれたパラメータを受け取り、再送するためのBashスクリプト