ユーザーからパスワードを読み取ろうとしたときに-s
自動フラグを使用しましたが、スクリプトread -s
では機能しませんが、端末で手動で実行すると機能します。
エラー情報
project.sh: 3: read: Illegal option -s
you entered
パスワード
maddy@ElementalX:~/Desktop$ cat project.sh
#!/usr/bin/sh
read -s -p "Enter Password: " pswd
echo "you entered $pswd"
maddy@ElementalX:~/Desktop$
答え1
-s
組み込みユーティリティオプションはread
標準ではなく、使用できませんsh
。同様に-p
、カスタムプロンプトを提供するオプションも普遍的には使用できませんsh
。
代わりに、入力した文字をエコーせずに端末からの読み取りをサポートするbash
スクリプトを実行してください。最も簡単な方法は、システムの実行可能ファイルを指すように-lineを変更することです。read
-s
-p
#!
bash
シェルでない場合は、bash
次のようなものを取得できます。
printf 'Enter password: ' >&2
stty -echo
read password
stty echo