Debutant en Bash, je suis en train de bosser sur un script de sauvegarde
automatique de plusieurs bases de données.
A chaque paramètre saisi (total $#), un mysqldump est fait. Mais un
problème se pose à moi, je n'arrive pas à retrouver _chaque_ valeur des
arguments lors du parcours dans la boucle.
Ce script est du genre :
./mysqlsavedb.sh db1 db2 dbsys dbsys2 db3 db4
i=0
if [ $# -eq 0 ]
then
echo "Merci de saisir un parametre !"
else
while [ $i -lt $# ]
do
i=$(( $i + 1 ))
echo "$i "
# Je voudrais le nom de la base de données dans $dbname
# ex : si $i=1 alors $dbname=db1
#
# _________ LE PROBLEME EST LA
# \/
dbname="$($i)"
echo "Je vais sauvegarder la base de données $dbname réf $i"
mysqldump $dbname > /home/mrbug/save_$dbname.sql --
password='totoamalodo' -u dumpuser
done
fi
Un $($i), \$$i pour retrouver le nom de chaque parametre $1, $2, $3,
etc.. ?
Merci de votre aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pascal Bourguignon
MrBuG writes:
Bonsoir,
Debutant en Bash, je suis en train de bosser sur un script de sauvegarde automatique de plusieurs bases de données.
A chaque paramètre saisi (total $#), un mysqldump est fait. Mais un problème se pose à moi, je n'arrive pas à retrouver _chaque_ valeur des arguments lors du parcours dans la boucle.
Ce script est du genre : ./mysqlsavedb.sh db1 db2 dbsys dbsys2 db3 db4
i=0 if [ $# -eq 0 ] then echo "Merci de saisir un parametre !" else while [ $i -lt $# ] do
Utiliser: for dbname ; do ... done
i=$(( $i + 1 )) echo "$i " # Je voudrais le nom de la base de données dans $dbname # ex : si $i=1 alors $dbnameÛ1 # # _________ LE PROBLEME EST LA # / dbname="$($i)"
Utiliser { } au lieu de () on n'est pas dans un Makefile! Avec Bash, utiliser ! pour une indirection: ${!i} Mais comme je disais plus haut, faut pas s'embêter, il y a for arg ; do ... done
echo "Je vais sauvegarder la base de données $dbname réf $i" mysqldump $dbname > /home/mrbug/save_$dbname.sql -- password='totoamalodo' -u dumpuser done fi
Un $($i), $$i pour retrouver le nom de chaque parametre $1, $2, $3, etc.. ? Merci de votre aide.
Debutant en Bash, je suis en train de bosser sur un script de sauvegarde
automatique de plusieurs bases de données.
A chaque paramètre saisi (total $#), un mysqldump est fait. Mais un
problème se pose à moi, je n'arrive pas à retrouver _chaque_ valeur des
arguments lors du parcours dans la boucle.
Ce script est du genre :
./mysqlsavedb.sh db1 db2 dbsys dbsys2 db3 db4
i=0
if [ $# -eq 0 ]
then
echo "Merci de saisir un parametre !"
else
while [ $i -lt $# ]
do
Utiliser:
for dbname ; do ... done
i=$(( $i + 1 ))
echo "$i "
# Je voudrais le nom de la base de données dans $dbname
# ex : si $i=1 alors $dbnameÛ1
#
# _________ LE PROBLEME EST LA
# /
dbname="$($i)"
Utiliser { } au lieu de () on n'est pas dans un Makefile!
Avec Bash, utiliser ! pour une indirection: ${!i}
Mais comme je disais plus haut, faut pas s'embêter, il y a for arg ; do ... done
echo "Je vais sauvegarder la base de données $dbname réf $i"
mysqldump $dbname > /home/mrbug/save_$dbname.sql --
password='totoamalodo' -u dumpuser
done
fi
Un $($i), $$i pour retrouver le nom de chaque parametre $1, $2, $3,
etc.. ?
Merci de votre aide.
Debutant en Bash, je suis en train de bosser sur un script de sauvegarde automatique de plusieurs bases de données.
A chaque paramètre saisi (total $#), un mysqldump est fait. Mais un problème se pose à moi, je n'arrive pas à retrouver _chaque_ valeur des arguments lors du parcours dans la boucle.
Ce script est du genre : ./mysqlsavedb.sh db1 db2 dbsys dbsys2 db3 db4
i=0 if [ $# -eq 0 ] then echo "Merci de saisir un parametre !" else while [ $i -lt $# ] do
Utiliser: for dbname ; do ... done
i=$(( $i + 1 )) echo "$i " # Je voudrais le nom de la base de données dans $dbname # ex : si $i=1 alors $dbnameÛ1 # # _________ LE PROBLEME EST LA # / dbname="$($i)"
Utiliser { } au lieu de () on n'est pas dans un Makefile! Avec Bash, utiliser ! pour une indirection: ${!i} Mais comme je disais plus haut, faut pas s'embêter, il y a for arg ; do ... done
echo "Je vais sauvegarder la base de données $dbname réf $i" mysqldump $dbname > /home/mrbug/save_$dbname.sql -- password='totoamalodo' -u dumpuser done fi
Un $($i), $$i pour retrouver le nom de chaque parametre $1, $2, $3, etc.. ? Merci de votre aide.
Debutant en Bash, je suis en train de bosser sur un script de sauvegarde automatique de plusieurs bases de données.
A chaque paramètre saisi (total $#), un mysqldump est fait. Mais un problème se pose à moi, je n'arrive pas à retrouver _chaque_ valeur des arguments lors du parcours dans la boucle.
Ce script est du genre : ./mysqlsavedb.sh db1 db2 dbsys dbsys2 db3 db4
Pour parcourir tous les arguments tu peux aussi utiliser `shift X' qui déplace les éléments de X positions vers la gauche :
while [ $# -gt 0 ]; do echo "Traitement $1"; shift 1; done
On Sun, 09 Nov 2003 23:55:43 +0000, MrBuG wrote:
Bonsoir,
Debutant en Bash, je suis en train de bosser sur un script de sauvegarde
automatique de plusieurs bases de données.
A chaque paramètre saisi (total $#), un mysqldump est fait. Mais un
problème se pose à moi, je n'arrive pas à retrouver _chaque_ valeur des
arguments lors du parcours dans la boucle.
Ce script est du genre :
./mysqlsavedb.sh db1 db2 dbsys dbsys2 db3 db4
Pour parcourir tous les arguments tu peux aussi utiliser `shift X' qui
déplace les éléments de X positions vers la gauche :
while [ $# -gt 0 ]; do
echo "Traitement $1";
shift 1;
done
Debutant en Bash, je suis en train de bosser sur un script de sauvegarde automatique de plusieurs bases de données.
A chaque paramètre saisi (total $#), un mysqldump est fait. Mais un problème se pose à moi, je n'arrive pas à retrouver _chaque_ valeur des arguments lors du parcours dans la boucle.
Ce script est du genre : ./mysqlsavedb.sh db1 db2 dbsys dbsys2 db3 db4
Pour parcourir tous les arguments tu peux aussi utiliser `shift X' qui déplace les éléments de X positions vers la gauche :
while [ $# -gt 0 ]; do echo "Traitement $1"; shift 1; done