1
resposta

Retorno de função por user input em Shell Script

Olá a todos.

Com base no exercício passado na aula, decidi tentar dar algumas incrementadas a mais no script, com um pouco mais de interação com o usuário.

A intenção é fazer com que, mesmo após ele ter feito o backup de uma database específica, ele ter a chance de escolher uma outra para repetir o processo, através do clássico [S/n] para chamar a função de novo.

Ao inputar S, o script usa os parâmetros já passados anteriormente na primeira chamada da função. A questão seria basicamente como fazer que a função "descarte" os parâmetros passados às variáveis toda vez que ela for executada novamente.

Obrigado.

Segue o código:

#!/bin/bash
cd ~/Documentos/awsBackup

databases=$(mysql -u root -e "show databases;" | grep -v Database)

backup(){
if [ -z $1 ]
then
    while [ -z $request ] || [ ! -d /var/lib/mysql/$db ]
    do
            echo $databases
            read -p "Informe uma database dentre as listadas acima " request
             db=$(echo $request)
             tabelas=$(mysql -u root $db -e "show tables;" | grep -v Tables)
    done
else
    db=$1
    tabelas=$(mysql -u root $db -e "show tables;" | grep -v Tables)
fi

if [ ! -d $db ]
then
        mkdir $db
fi

cd ~/Documentos/awsBackup/$db
data=$(date +%F)
if [ ! -d $data ]
then
        mkdir $data
fi


for table in $tabelas
do
        echo "Copiando $table.sql para o diretório awsBackup..."
        sleep 1
        mysqldump -u root $db $table > ~/Documentos/awsBackup/$db/$data/$table.sql
done

caminho=~/Documentos/awsBackup/$db/$data
echo "Tabelas salvas em $caminho."

while true;
do
            read -p "Deseja fazer Backup das tabelas de outra database? [S/n]" sn
                case $sn in
                    [Ss]* ) backup; break;;
                    [Nn]* ) exit;;
                    * ) echo "Por favor, escolha entre as opções 'S' ou 'N'";;
                esac
done

}
backup
1 resposta

Tudo bem Thiago?

Parabéns por ter visto uma possível melhoria e ter estudado uma maneira de implementa-la, obrigado pela sua contribuição.

Continue se esforçando e bons estudos.