コマンド中に+を使用してスクリプトを終了すると、Ctrlモードは中断されます。 (私はWindows 10でCygwin端末を使用しています。)Cread ...
stty -echo
残念ながら、read -s
ループ内で呼び出されると「ゆっくり」反応するため、問題は解決されません。 (一部の入力が表示されることがあります。)
#!/usr/bin/env bash
trap 'stty echo && exit' SIGINT
stty -echo
read -n 1 input # pressing Ctrl+C here!!
# ...
しかし、-n 1
期待通りに仕事をやめれば、次のようになります。
#!/usr/bin/env bash
trap 'stty echo && exit' SIGINT
stty -echo
read input # pressing Ctrl+C here!!
# ...
何らかの理由で、これは期待どおりに機能します。
#!/usr/bin/env bash
while getopts k flag; do
case "${flag}" in
k) do_read="true" ;;
esac
done
if [[ $do_read != "true" ]]; then
# just restarting
"$0" -k && stty echo
exit
fi
trap 'echo exiting && exit' SIGINT
stty -echo
read -n 1 input # pressing Ctrl+C here!!
# ...
何が起こっているのかを説明できる人はいますか?