OVH Cloud OVH Cloud

[BASH] Script récup. valeur parametres

2 réponses
Avatar
MrBuG
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
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.

--
Mr. Bug

2 réponses

Avatar
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.

--
Mr. Bug


--
__Pascal_Bourguignon__
http://www.informatimago.com/

Avatar
no
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