Shell-Skript veranlasst, den Befehl bei bestimmten Benutzereingaben erneut auszuführen

Shell-Skript veranlasst, den Befehl bei bestimmten Benutzereingaben erneut auszuführen

Ich schreibe ein Shell-Skript, das meinen Hostnamen zufällig auswählt, aber den zufälligen Hostnamen ausgibt und mich fragt, ob ich diesen Hostnamen verwenden möchte, zum Beispiel

NEXTHOST=$(sed `perl -e "print int rand(99999)"`"q;d" /usr/share/dict/words)
echo "Do you want to use this hostname? (y/n)
read variable_name
if [ "$variable_name" = n ] ; then

(das ist der Teil, bei dem ich möchte, dass der Befehl für NEXTHOST erneut ausgeführt wird), ich habe den Code für „y“ ausgelassen, weil ich diesen Teil bereits verstehe.

Wie kann ich erreichen, dass der Befehl erneut ausgeführt wird, wenn ich „n“ eingebe?

Antwort1

Sie können hierfür eine Funktion definieren und dann Rekursion verwenden. Als Beispiel:

#!/bin/bash

#Defining hostgen function
hostgen() {
    NEXTHOST=$(sed `perl -e "print int rand(99999)"`"q;d" /usr/share/dict/words)
    echo $NEXTHOST
    read -p 'Do you want to use this hostname? (y/n)' variable_name
    if [ "$variable_name" = "n" ]; then
        echo "Okay. I will generate again"
        hostgen
    else
        echo "Your final hostname is : $NEXTHOST"
        exit
    fi
}

#Run hostgen for the first time
hostgen

Beachten Sie, dass ich den Hostnamen hier noch nicht festgelegt habe. Das können Sie tun.

verwandte Informationen