サンプルコード1
echo -n 'input something: '
read input
echo "$input"
サンプルコード2
question.sh
read -p 'USER NAME: ' user_name
stty -echo
read -p 'PASSWORD: ' password
stty echo
echo -e '\n'
echo "Hi! $user_name"
echo "$password"
複数入力を受け付ける方法はこちら
パスワードの非表示入力をしたい場合
ユーザー入力部分をパイプラインで渡す
パイプラインでサンプルコード2のスクリプトにユーザー名・パスワードを渡す
$ printf 'hello\npass' | sh qustion.sh
stty: standard input: Inappropriate ioctl for device
stty: standard input: Inappropriate ioctl for device
Hi! hello
Your Password: pass
コメントにて
コメントで教えて頂きました。
ユーザーの入力文字を非表示にしたい場合、read -s -p
のように-s
オプションをつけると、stty
が不要になります。stty: standard input: Inappropriate ioctl for device
のエラーも消えました。
question.sh
read -p 'USER NAME: ' user_name
read -s -p 'PASSWORD: ' password
echo -e '\n'
echo "Hi! $user_name"
echo "Your Password: $password"
$ printf 'hello\npass' | sh qustion.sh
Hi! hello
Your Password: pass
参考記事