読み取りコマンドを呼び出すと、トラップ「割り込み」は機能しません。

読み取りコマンドを呼び出すと、トラップ「割り込み」は機能しません。

私は学校のプロジェクト用に書かれたbash実行ゲームを持っており、現在のユーザーが実際のゲームのカテゴリ選択メニューに戻ることができるように、ctrl-c終了コマンドをwhileループブレークに置き換えようとしています。

現在使用しているコードは次のとおりです。

trap "break" SIGINT

while ループ内部:

read CHAR

ループ内でテキストを印刷してsleepコマンドを実行すると、すべてがうまく機能しますが、アルゴリズムが読み取りコマンドにあるときにctrl-cを押すと、コンソールに「^ C」のみが入力されます。

ベストアンサー1

Bashがコマンドが完了するのを待ってトラップが確立されたことを知らせると、コマンドが完了するまでトラップは実行されません。

そのため中断されませんread

^C設定により、シェルではなく端末から出力されますechoctl。実行すると表示されませんstty -echoctl

おすすめ記事