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