問題タブ [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.

0 投票する
1 に答える
11918 参照

shell - シェルスクリプトでexit 1シグナルをトラップする方法は?

シグナル 1 のトラップを試みたいが、失敗する

出口 1 であっても、常にトラップ 0 にトラップされます。これを解決する方法を知っている人はいますか?

ありがとう

0 投票する
2 に答える
1080 参照

bash - 配管中にトラップは期待どおりに機能しますか?

問題のデモ用の最小限のコードは次のとおりです: http://pastebin.com/5TXDpSh5

出力

期待される出力

NB: OSX 10.9.2 bash (3.2.51) でテストしました - 他のバージョンの bash では、実際の予想される出力と同じ違いがあり、以下で説明します

0 投票する
1 に答える
1411 参照

bash - トラップ/リターンの後、終了ステータスはどこに行きますか?

この質問trapのために関数内で使用して遊んでいましたが、この二次的な質問を思いつきました。次のコードがあるとします。

を実行dするtrapと、シェルは「hi」を出力せずに関数から戻ります。ここまでは順調ですね。しかし、もう一度実行すると、シェルから次のメッセージが表示されます。

-bash: return: 関数またはソース スクリプトからのみ「戻る」ことができます

最初は、これは ERR sig が 2 回発生したことを意味すると想定しました。1 回目falseはゼロ以外の終了ステータスが返されたとき (関数内)、もう 1 回は関数自体がゼロ以外の終了ステータスで返されたとき (関数外) です。しかし、その仮説はこのテストに耐えられません。

上記を実行すると、どれだけ頻繁に実行しても、関数またはソーススクリプトからのみreturn警告が表示されなくなります。シェルが引数内の単純なコマンドとは異なる複合コマンドを扱うのはなぜtrapですか?

私の目標は、関数を終了させたコマンドの実際の終了ステータスを維持することでしたが、上記の動作の原因が何であれ、終了ステータスのキャプチャも複雑になると思います。

ワット?$sここで が 2 つの異なる値に展開される理由と、同じ原因であることが判明した場合は、上記の と の区別をreturn誰かが説明できますかecho +; return?

0 投票する
1 に答える
6209 参照

bash - 別のバイナリを実行するときに bash EXIT トラップを達成するにはどうすればよいですか?

EXITbashトラップ使用execして、新しいプロセスの生成を回避したいと考えています。これは可能ですか?

あれは、

$0.$$は、 bash のEXITトラップを使用して一時ファイルを削除します。

トラップを「起動」することはありません ( からのメッセージはありません。完了後rmにファイル$0.$$が存在します)。

もちろん、exec. . それを機能させて使用する方法はありますexecか?これは確かに、実際的な問題というよりは好奇心によるものです。

0 投票する
1 に答える
1915 参照

bash - read と trap を使用する bashscript からのクリーンな終了

以下のスクリプトを実行します
Ctrl+C を押します
現在の端末の動作を観察します。
Enter キーを数回押して、いくつかのコマンドを実行してみます。

私は何をしているのだろうか?
私はきれいな出口を作ろうとします。動作していますが、終了後、ターミナル STDIN が消えます。