12

そのため、条件を使用してユーザーがパスワードを入力したかどうかをテストする方法を誰かが教えてくれました。私は彼らの例をさらに一歩進めて、ループを使用したいと思います(少なくともそれが私が呼んでいるものだと思います)。

これが彼らの例です:

read -s -p "Enter new password: " NEWPASS

if test "$NEWPASS" = ""; then
    echo "Password CAN NOT be blank re-run sshd_config"
    exit 1;
fi

スクリプトを終了する代わりに、入力があるまで入力を求め続けたいと思います。

私はこのような声明を出したいのですが、私はそれを間違っていました: (今、トップの例を使用しています)

ユーザーには、新しいパスワードを入力して変数値を入力する機会が与えられます。

read -s -p "Enter new password:" NEWPASS
echo ""

次の部分では、変数をチェックして値が含まれているかどうかを確認します。値が null の場合は、ユーザーに無期限に値を入力するように要求します。(ループ)

while [[ -z "$NEWPASS" ]]; do
echo ""
echo "Password CAN NOT be blank"
echo ""
read -s -p "Enter new password:" NEWPASS;
echo ""
done

この行は、別のファイルで使用される一連の変数を含むファイルを検索します。次に、PASS=.* (.* はすべての意味) を含む行をファイルで検索し、PASS=$NEWPASS ($NEWPASS は変数) を書き込みます。

sed -i -e"s/^PASS=.*/PASS=$NEWPASS/" /etc/sshd.conf   

すべての助けをありがとう、私はこれを使用して、そこから学ぶつもりです。

4

2 に答える 2

25

このwhileループは機能するはずです:

while [[ -z "$NEWPASS" ]]
do
  read -s -p "Enter new password: " NEWPASS
done
于 2013-10-22T19:16:49.603 に答える
5
while read -s -p 'Enter new password: ' NEWPASS && [[ -z "$NEWPASS" ]] ; do
 echo "No-no, please, no blank passwords!"
done
于 2013-10-22T19:17:00.673 に答える