Нажатие Ctrl-C во время ожидания ввода из операции read -sp
возвращает операцию обратно в командную строку, но ввод данных скрыт, как и все еще работает read -s
.Вход терминала скрыт после прерывания «read -s»
пример
#!/bin/sh
sig_handler() {
echo "SIGINT received"
exit 1
}
trap "sig_handler" SIGINT
read -sp "ENTER PASSWORD: " password
echo
echo $password
, который выполняет обычно нравится:
$~ ./example.sh
ENTER PASSWORD:
password
$~ text
-bash: text: command not found
, но если нажать Ctrl-C на ENTER PASSWORD вы получите
$~ ./example.sh
ENTER PASSWORD: SIGINT received
$~ -bash: text: command not found
где текст или любой другой следующей команды не отображается как вход, пока вы не обновите с помощью reset
.
Как вы можете вернуть текст в обычный ввод после получения SIGINT? read -p "ENTER PASSWORD: " password
не рекомендуется по очевидным соображениям безопасности.
Это интересно, я добавил Запущенный и tput rs1 в sig_handler прежде, чем без какого-либо аффекта (тестирование теперь работает) должен был случайно поставить его ниже выхода 1 или что-то в этом роде. благодаря – Mike