私は学校のプロジェクト用に書かれたbash実行ゲームを持っており、現在のユーザーが実際のゲームのカテゴリ選択メニューに戻ることができるように、ctrl-c終了コマンドをwhileループブレークに置き換えようとしています。
現在使用しているコードは次のとおりです。
trap "break" SIGINT
while ループ内部:
read CHAR
ループ内でテキストを印刷してsleepコマンドを実行すると、すべてがうまく機能しますが、アルゴリズムが読み取りコマンドにあるときにctrl-cを押すと、コンソールに「^ C」のみが入力されます。
ベストアンサー1
Bashがコマンドが完了するのを待ってトラップが確立されたことを知らせると、コマンドが完了するまでトラップは実行されません。
そのため中断されませんread
。
^C
設定により、シェルではなく端末から出力されますechoctl
。実行すると表示されませんstty -echoctl
。