Faça o comando shell rerun command em determinada entrada do usuário

1

Estou escrevendo um script de shell que randomiza meu nome de host, mas imprime o nome do host aleatório e me avisa se eu quiser 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 em que quero que execute novamente o comando para NEXTHOST), deixei de fora o código para "y" porque eu já entendi essa parte.

Como faço para reexecutar o comando se eu inserir n?

    
por user52470 17.05.2015 / 18:46

1 resposta

1

Você pode definir uma função para isso e, em seguida, usar recursão. Como 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

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

    
por 17.05.2015 / 19:00