Naciśnięcie klawisza Ctrl-C podczas oczekiwania na dane wejściowe z operacji read -sp
przywraca działanie z powrotem do wiersza poleceń, ale dane wejściowe są ukryte, tak jak wciąż są w toku: read -s
.Wejście terminalu ukryte po przerwaniu "read -s"
przykład
#!/bin/sh
sig_handler() {
echo "SIGINT received"
exit 1
}
trap "sig_handler" SIGINT
read -sp "ENTER PASSWORD: " password
echo
echo $password
który wykonuje normalnie lubię:
$~ ./example.sh
ENTER PASSWORD:
password
$~ text
-bash: text: command not found
ale jeśli nacisnąć Ctrl-C na ENTER PASSWORD masz
$~ ./example.sh
ENTER PASSWORD: SIGINT received
$~ -bash: text: command not found
gdzie tekst lub inny następujące polecenie nie jest wyświetlane jako dane wejściowe, dopóki nie odświeżysz się za pomocą reset
.
Jak można przywrócić tekst do normalnego wejścia po otrzymaniu SIGINT? read -p "ENTER PASSWORD: " password
nie jest pożądany z oczywistych względów bezpieczeństwa.
To ciekawe, dodałem stty sane i tput RS1 w sig_handler zanim bez żadnego wpływu (testowanie teraz, że działa) musi przypadkowo umieścić go pod wyjściem 1 lub czymś podobnym. Dzięki – Mike