誰かが、ユーザーがパスワードの入力を入力したかどうかをテストするために条件を使用する方法を教えてくれました。 私は一歩一歩前進し、ループを使用したいと思っています。ここでユーザー入力が何かに等しくなるまで
はその例です。
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 ""
値は、それが無限に値を埋めるようにユーザに要求ヌルである次の部分は、それが値を含んでいるかどうかを確認するために変数をチェックします。 (ループ)
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
はすべての助けをありがとう、私はするつもりですこれを使ってそれから学ぶ。
、あなたの答えを打破し、説明してもらえますか?私はかなりジストを手に入れます。私はそれを完全に理解したいだけです。 – Geofferey
はい。 '-z string'はstringが空であることを意味し、while [[-z" $ NEWPASS "]]'は '$ NEWPASS'が空になるまでループ中にこれを実行することを意味します。あなたの通常の読み込みコマンドはwhileループの中に入ります。ユーザがEnterを押すと、 '$ NEWPASS'はまだ空白になりプロンプトが再び表示されます。 '$ NEWPASS'は空ではないので、モーメントユーザはループを終了している間に値を入力します。詳細については 'man test'を実行してください。 – anubhava