標準入力ではなくキーボードからパスワードを読み取る

標準入力ではなくキーボードからパスワードを読み取る

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

関連情報