Hacer que el script de shell vuelva a ejecutar el comando en determinadas entradas del usuario

Hacer que el script de shell vuelva a ejecutar el comando en determinadas entradas del usuario

Estoy escribiendo un script de shell que aleatoriza mi nombre de host pero imprime el nombre de host aleatorio y me pregunta si quiero usar este nombre de host, por ejemplo.

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

(esta es la parte donde quiero que vuelva a ejecutar el comando para NEXTHOST), omití el código para "y" porque ya entiendo esa parte.

¿Cómo hago para que vuelva a ejecutar el comando si ingreso n?

Respuesta1

Puede definir una función para esto y luego usar la recursividad. Como ejemplo:

#!/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

Tenga en cuenta que todavía no he configurado el nombre de host en esto. Usted puede hacer eso.

información relacionada