私はBourne Shellスクリプトを書いていて、次のようなパスワードを入力しています。
echo -n 'Password: '
read password
明らかに、パスワードが端末にエコーされたくないので、読み取りの間はエコーをオフにします。 stty
を使用してこれを行う方法があることは知っていますが、マンページを読みながら、コミュニティの利益のために質問します。 ;)
stty_orig=`stty -g`
stty -echo
echo 'hidden section'
stty $stty_orig
read -s password
は私のLinuxボックスで動作します。
readの '-s'オプションコマンドを使用して、ユーザー入力を非表示にすることができます。
echo -n "Password:"
read -s password
if [ $password != "..." ]
then
exit 1; # exit as password mismatched #
fi
また、ターミナルから非表示にして印刷する場合は、 'stty -echo'を使用できます。 "stty echo"を使用して端末設定を復元します
しかし、ユーザーからパスワード入力を取得するには 'read -s password'で十分です。
Bourne Shell Script:
#!/bin/sh
# Prompt user for Password
echo -n 'Password: '
# Do not show what is being typed in console by user
stty -echo
# Get input from user and assign input to variable password
read password
# Show what is being typed in console
stty echo
詳細については、stty手動コマンド:
@:/dir #man stty
stty手動スニペット:
STTY(1) stty 5.2.1 (March 2004) STTY(1)
NAME
stty - change and print terminal line settings
SYNOPSIS
stty [-F DEVICE] [--file=DEVICE] [SETTING]...
stty [-F DEVICE] [--file=DEVICE] [-a|--all]
stty [-F DEVICE] [--file=DEVICE] [-g|--save]
DESCRIPTION
Print or change terminal characteristics.
-a, --all
print all current settings in human-readable form
-g, --save
print all current settings in a stty-readable form
-F, --file=DEVICE
open and use the specified DEVICE instead of stdin
--help
display this help and exit
--version
output version information and exit
Optional - before SETTING indicates negation. An * marks
non-POSIX settings. The underlying system defines which
settings are available.
Local settings:
[-]echo
echo input characters