j'écris un petit script shell me permettant de vérifier la taille de mes tables dans une base de données. Sil les tables atteignent la taille que j'ai défini alors elles doivent etre sauvegardées sous un autre nom puis vidées par la suite.
Mais voilà mon sed me permettant de remplacer le nom des tables par un autre nom dans mon fichier sql me montre bien à l'exécution que le remplacement à eu lieu mais quan je vérifie le fichier aucune modification ne s'est opérée. pourtant en exécutant cette même commande (sans les variables) dans le shell tout se passe correctement.
Et aussi malgré le fait que je ne précise pas de mot passe il me demande toujours le mot de passe sql.
Un petit exemple de mon script:
#!/bin/bash
# Script de vidage de la base de donnée
########################################## New script #########
dossier="/home/toto/save_sql"
sql="show table status"
passwd=
mysql -u root -e "$sql" -s test > result_rq.txt
#Spécification du caractère tabulation comme délimiteur de champs
date=`date +"%d%m%Y"`
for i in `awk 'BEGIN {FS=":|\t"} {if ($9 >= 4096) print $1}'< result_rq.txt`;
do
nomfic=$i"_"$date
mysqldump -u root test $i > $dossier/$nomfic.sql;
sed "s/$i/$nomfic/" $dossier/$nomfic.sql;
#sql1="create table "$nomfic
#Envoi de mail
#mail -s 'Sauvegarde mensuelle' toto@toto.com <
# la table $nomfic a bien été sauvegardée
#EOMAIL
echo "la table " $nomfic " a bien été sauvegardée";
done
Merci pour les retours
# sed -i
Posté par Nerdiland de Fesseps . Évalué à 2.
sed s/$i/$nomfic/" $dossier/$nomfic.sql;
[^] # Re: sed -i
Posté par Nerdiland de Fesseps . Évalué à 4.
sed -i "s/$i/$nomfic/" $dossier/$nomfic.sql;
[^] # Re: sed -i
Posté par serval21 . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.