Прочитать пароль с клавиатуры вместо stdin

Прочитать пароль с клавиатуры вместо stdin

У меня есть zshскрипт, который предлагает ввести данные с клавиатуры:

read -rs 'pw?Password: '

Этот скрипт также должен считывать содержимое файла из stdin. Но readкоманда берет первую строку stdin и использует ее в качестве входных данных для пароля:

myscript <<< 'line1\nline2'    # pw == 'line1'

Есть ли способ обойти это? Я бы предпочел решение zsh«или» bash, хотя я открыт и для других вариантов.

(Кстати, gpg2я знаю, что это возможно... просто не знаю как.)

решение1

Терминал всегда доступен через /dev/tty, независимо от того, откуда был перенаправлен стандартный ввод.

read -rs 'pw?Password: ' </dev/tty

Связанный контент