私は学校のプロジェクトのためにこのbashで書かれた絞首刑執行人のゲームを持っています、そして現在私はしばらくループブレークのためにctrl-c exitコマンドを置き換えようとしています、それでユーザーは実際のゲームからカテゴリー選択メニューに戻ります。
私が現在使用しているコードは次のとおりです。
trap "break" SIGINT
そしてwhileループの内側:
read CHAR
ループ内でテキストが出力されているとき、およびsleepコマンドが実行されているときはすべて正常に機能しますが、アルゴリズムが読み取りコマンドのときに、ctrl-cを押すとコンソールに「^ C」と入力するだけです。
Bashがコマンドの完了を待機していて、トラップが設定されているシグナルを受信した場合、コマンドが完了するまでトラップは実行されません。
これが、read
が中断されない理由です。
^C
は、echoctl
の設定により、シェルではなく端末によって出力されます。 stty -echoctl
を実行すると、表示されません。