Ich versuche, eine Weile Schleife zu machen. Diese Schleife sollte entweder "try again" oder "exit to quit" wiederholen, wenn Sie "gibberish" eingeben oder einen Benutzer finger drücken, wenn Sie den Benutzernamen eingegeben haben.Bash While-Schleife
echo Please enter a user name to find.
read username
done_fn()
{
finger $username
exit 0
}
continue_fn()
{
echo 'try again or type exit to quit'
read exitvar
}
grep $username /etc/passwd >/dev/null
while [ $? -eq 0 ]
do
done_fn
done
exitvar=quit
until [ $exitvar = exit ]
do
continue_fn
done
while [ -u $exitvar ]
do
done_fn
done
Das ist alles, was ich bisher habe. Immer wenn ich einen Benutzernamen nach 'try again' oder 'exit to quit' eintippe, wird es einfach erneut gesendet. Ich möchte, dass der Benutzer gefühlt wird, anstatt es erneut zu wiederholen. Ich habe an so vielen Orten gesucht und kann die Antwort nicht finden.
Vielen Dank im Voraus.
Können Sie die Ausgabe teilen, die Sie bekommen? Um das falsche Verhalten zu zeigen? –
Erfahren Sie, wie Sie die Shell-Debug/Trace-Funktion verwenden und problematische Zeilen mit 'set -vx' und' set + vx' umgeben, um sie zu deaktivieren. Ihr Code wird angezeigt und anschließend ausgeführt. Zeilen mit + an der Vorderseite zeigen Ihnen, welche Werte für Variablennamen ersetzt wurden. Im Debug-Modus wird die gesamte Quotierung von der Debug/Trace-Funktion auf Single-Quote heruntergefahren. Sie sollten sofort sehen, was Ihr Problem mit 'grep' gefolgt von' while' ist. Viel Glück! – shellter
Sobald ich es ausgeführt habe und einen korrekten Benutzer eintippe, fingert es den Benutzer. Wenn ich Gibberish eintippe, gibt es 'try again' aus oder tippe 'exit to quit'. Sobald ich versuche, einen korrekten Benutzer einzutragen, wird die Ausgabe fortgesetzt. 'try again' oder 'exit to quit' eingeben. ' username_loop.sh Bitte geben Sie einen Benutzernamen ein, um zu finden. jmalley2 Anmelden: jmalley2 Name: Joseph Malley username_loop.sh Bitte geben Sie einen Benutzernamen ein, um zu finden. asdfasdfasfasf versuchen Sie es erneut oder geben Sie exit jmalley2 versuchen Sie es erneut oder geben Sie exit zu verlassen –