Faça o comando shell script reexecutar em determinada entrada do usuário

Faça o comando shell script reexecutar em determinada entrada do usuário

Estou escrevendo um script de shell que randomiza meu nome de host, mas imprime o nome de host aleatório e me pergunta se eu quero usar esse nome de host, por exemplo

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 é a parte onde quero executar novamente o comando do NEXTHOST), deixei de fora o código de "y" porque já entendi essa parte.

Como faço para executar novamente o comando se eu inserir n?

Responder1

Você pode definir uma função para isso e depois usar a recursão. Como um exemplo:

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

Observe que ainda não defini o nome do host. Você pode fazer isso.

informação relacionada