スクリプトを介して -s を読み取るとエラーが発生します。

スクリプトを介して -s を読み取るとエラーが発生します。

ユーザーからパスワードを読み取ろうとしたときに-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

おすすめ記事