Quindi qualcuno mi ha mostrato come utilizzare le condizioni per verificare se un utente ha digitato input per una password. Voglio fare un esempio del loro esempio e usare un ciclo (almeno quello che penso sia il mio richiamo).Fino a quando l'input dell'utente equivale a qualcosa da fare
Ecco il loro esempio:
read -s -p "Enter new password: " NEWPASS
if test "$NEWPASS" = ""; then
echo "Password CAN NOT be blank re-run sshd_config"
exit 1;
fi
invece di uscire il copione lo voglio continuare a chiedere per l'ingresso fino a quando v'è una certa.
Voglio fare una dichiarazione come questo, ma stavo facendo sbagliato: (Ora, usando ad esempio in alto)
utente è data la possibilità di inserire la nuova password e compilare il valore della variabile.
read -s -p "Enter new password:" NEWPASS
echo ""
La porzione successiva controlla la variabile per vedere se contiene un valore, mentre il valore è nullo esso richiedere all'utente di riempire il valore indefinitamente. (a loop)
while [[ -z "$NEWPASS" ]]; do
echo ""
echo "Password CAN NOT be blank"
echo ""
read -s -p "Enter new password:" NEWPASS;
echo ""
done
Questa riga cerca un file contenente un insieme di variabili utilizzate da un altro file. Poi cerca il file per una riga contenente pass =. * (. * Significa nulla) allora scrive PASSA = $ newpass ($ newpass essendo variabile)
sed -i -e"s/^PASS=.*/PASS=$NEWPASS/" /etc/sshd.conf
Grazie per tutto l'aiuto, ho intenzione di usa questo e impara da esso.
Potrebbe abbattere la tua risposta e spiegare? Prendo praticamente il jist, voglio solo capirlo completamente. – Geofferey
Sì, certo. '-z string' significa se la stringa è vuota e' mentre [[-z "$ NEWPASS"]] 'significa eseguire questo ciclo while finché' $ NEWPASS' è vuoto. Il tuo normale comando di lettura arriva all'interno del ciclo. Se l'utente preme, allora '$ NEWPASS' è ancora vuoto e viene visualizzato di nuovo il prompt. L'utente di momento inserisce un valore mentre il ciclo termina poiché '$ NEWPASS' diventa non vuoto. Esegui 'man test' per altro. – anubhava