問題タブ [bash-trap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shell - シェルスクリプトでexit 1シグナルをトラップする方法は?
シグナル 1 のトラップを試みたいが、失敗する
出口 1 であっても、常にトラップ 0 にトラップされます。これを解決する方法を知っている人はいますか?
ありがとう
bash - 配管中にトラップは期待どおりに機能しますか?
問題のデモ用の最小限のコードは次のとおりです: http://pastebin.com/5TXDpSh5
出力
期待される出力
NB: OSX 10.9.2 bash (3.2.51) でテストしました - 他のバージョンの bash では、実際の予想される出力と同じ違いがあり、以下で説明します
bash - トラップ/リターンの後、終了ステータスはどこに行きますか?
この質問trap
のために関数内で使用して遊んでいましたが、この二次的な質問を思いつきました。次のコードがあるとします。
を実行d
するtrap
と、シェルは「hi」を出力せずに関数から戻ります。ここまでは順調ですね。しかし、もう一度実行すると、シェルから次のメッセージが表示されます。
-bash: return: 関数またはソース スクリプトからのみ「戻る」ことができます
最初は、これは ERR sig が 2 回発生したことを意味すると想定しました。1 回目false
はゼロ以外の終了ステータスが返されたとき (関数内)、もう 1 回は関数自体がゼロ以外の終了ステータスで返されたとき (関数外) です。しかし、その仮説はこのテストに耐えられません。
上記を実行すると、どれだけ頻繁に実行しても、関数またはソーススクリプトからのみreturn
警告が表示されなくなります。シェルが引数内の単純なコマンドとは異なる複合コマンドを扱うのはなぜtrap
ですか?
私の目標は、関数を終了させたコマンドの実際の終了ステータスを維持することでしたが、上記の動作の原因が何であれ、終了ステータスのキャプチャも複雑になると思います。
ワット?$s
ここで が 2 つの異なる値に展開される理由と、同じ原因であることが判明した場合は、上記の と の区別をreturn
誰かが説明できますかecho +; return
?
bash - 別のバイナリを実行するときに bash EXIT トラップを達成するにはどうすればよいですか?
EXIT
bashトラップを使用exec
して、新しいプロセスの生成を回避したいと考えています。これは可能ですか?
あれは、
$0.$$
は、 bash のEXIT
トラップを使用して一時ファイルを削除します。
トラップを「起動」することはありません ( からのメッセージはありません。完了後rm
にファイル$0.$$
が存在します)。
もちろん、exec
. . それを機能させて使用する方法はありますexec
か?これは確かに、実際的な問題というよりは好奇心によるものです。
bash - read と trap を使用する bashscript からのクリーンな終了
以下のスクリプトを実行します
Ctrl+C を押します
現在の端末の動作を観察します。
Enter キーを数回押して、いくつかのコマンドを実行してみます。
私は何をしているのだろうか?
私はきれいな出口を作ろうとします。動作していますが、終了後、ターミナル STDIN が消えます。