So zeigte mir jemand, wie man Bedingung (en) verwendet, um zu testen, ob ein Benutzer Eingabe für ein Kennwort eingegeben hatte. Ich möchte ihr Beispiel einen Schritt weiter gehen und eine Schleife (zumindest das ist, was ich denke, es ist Anruf).Bis Benutzereingaben gleich sind, tun Sie
Hier ist ihr Beispiel:
read -s -p "Enter new password: " NEWPASS
if test "$NEWPASS" = ""; then
echo "Password CAN NOT be blank re-run sshd_config"
exit 1;
fi
Anstatt das Skript des Verlassens ich will es für die Eingabe zu fragen halten, bis es etwas ist.
Ich mag eine Aussage wie diese macht, aber ich war es falsch zu machen: (jetzt oben am Beispiel)
Der Benutzer gegeben ist eine Chance, neues Passwort einzugeben und den Variablenwert zu füllen.
read -s -p "Enter new password:" NEWPASS
echo ""
Der nächste Teil überprüft die Variable zu sehen, ob er einen Wert enthält, während der Wert null ist es, den Benutzer anfordern, auf unbestimmte Zeit den Wert zu füllen. (eine Schleife)
while [[ -z "$NEWPASS" ]]; do
echo ""
echo "Password CAN NOT be blank"
echo ""
read -s -p "Enter new password:" NEWPASS;
echo ""
done
Diese Zeile durchsucht eine Datei, die eine Gruppe von Variablen enthält, die von einer anderen Datei verwendet werden. Er sucht dann die Datei nach einer Zeile PASS enthalten =. * (. * Alles bedeutet), dann PASS = $ newpass ($ newpass variabel)
sed -i -e"s/^PASS=.*/PASS=$NEWPASS/" /etc/sshd.conf
Vielen Dank für all die Hilfe schreibt, ich werde Nutze das und lerne daraus.
Können Sie Ihre Antwort brechen und erklären? Ich bekomme den Jist ziemlich gut, ich will es nur ganz verstehen. – Geofferey
Ja sicher. '-z string' bedeutet, wenn string leer ist und while [[-z" $ NEWPASS "]]' bedeutet, dass diese while-Schleife solange ausgeführt wird, bis '$ NEWPASS' leer ist. Ihr regulärer Lesebefehl kommt innerhalb der while-Schleife. Wenn der Benutzer die Eingabetaste drückt, ist '$ NEWPASS' immer noch leer und die Eingabeaufforderung wird erneut angezeigt. Der Momentbenutzer gibt einen Wert ein, während die Schleife endet, da $ NEWPASS nicht leer wird. Führen Sie "Man Test" für mehr. – anubhava