5
操作からの入力を待っている間にCtrl-Cを押すと、操作はコマンドラインに戻されますが、入力はまだ実行中のように隠されますread -s
。'read -s'を中断した後にターミナル入力が表示されない
$~ ./example.sh
ENTER PASSWORD:
password
$~ text
-bash: text: command not found
しかし、あなたはではCtrl-Cを押した場合は、あなたが
$~ ./example.sh
ENTER PASSWORD: SIGINT received
$~ -bash: text: command not found
どこのテキストまたは他の次のコマンドを取得するパスワードを入力してください:通常、等を実行する
例
#!/bin/sh
sig_handler() {
echo "SIGINT received"
exit 1
}
trap "sig_handler" SIGINT
read -sp "ENTER PASSWORD: " password
echo
echo $password
reset
で更新するまで入力として表示されません。
SIGINTを受け取った後、テキストを通常の入力に戻すにはどうすればよいですか? read -p "ENTER PASSWORD: " password
は明らかなセキュリティ上の理由から望ましくない。それはデフォルトの状態に端末を復元するように
を面白いことに、私は任意の(テストは、今では動作します)に影響することなく、前sig_handlerにsttyの正気とTPUT RS1を追加しました誤って出口1または何かの下に置いていなければならない。ありがとう – Mike