
У меня есть 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