#1 Le 01/06/2016, à 09:25
- psylo24
[Résolu] Boucle dans un script de sauvegarde
Bonjour tout le monde,
Je sollicite votre aide à ce jour car je suis en train de perfectionner un script de sauvegarde et je suis bloqué.
Contexte :
Mon script utilise une fonction getBDD qui permet de
1. vérifier si le fichier existe
2. si il existe alors je renomme (via mv) mon fichier $file (qui est égal à ty en ta) et c'est censé me renvoyer 2 mais ce n'est pas le cas.
3. Si il n'existe pas alors ça me retourne le message "ty not found" et ça me renvoie 3.
Dés que j'essaie d'exécuter ma fonction getBDD dans la boucle while ca me renomme bien ty en ta mais aprés ca ne sort part de la boucle et ça me retourne indéfiniment les lignes suivantes :
ty found.
ty found.
tttt
0
0
ty not found.
3
0
ty not found.
3
0
Donc déjà premier problème est que la ligne "status=$?" ne fonctionne pas car quand je fais un "echo $status" ça me retourne 0 au lieu de 3.
Mon besoin :
En gros je veux que mon script gère les erreurs en cas d'échec, que si mon script n'arrive pas à récupérer le fichier (si fichier inexistant ou si erreur lors du mv) ca me relance ma fonction getBDD. J'ai donc eu l'idée d'utiliser ce système de "return" de code.
#!/bin/bash
file="ty"
#!/bin/bash
file="ty"
function getBDD () {
if [ -f "$file" ]
then
echo "$file found."
mv $file ta
error=$?
if [ $error -ne 0 ]
then
echo "Erreur recuperation BDD: we have an exit code of $error"
return 2
fi
echo tttt
return
else
echo "$file not found."
return 3
fi
}
#getBDD
#echo The previous function has a return value of $?
status=0
#echo $status
while [ $status != 1 ]
do
#echo $status
sleep 3
getBDD
echo $?
status=$?
echo $status
done
Merci par avance pour votre aide :-)
Dernière modification par psylo24 (Le 01/06/2016, à 10:22)
Hors ligne
#2 Le 01/06/2016, à 10:03
- pingouinux
Re : [Résolu] Boucle dans un script de sauvegarde
Bonjour,
Je n'ai pas regardé en détail, mais dans ces 2 lignes
echo $?
status=$?
status va être égal au code de retour du echo.
Il faut que tu fasses ceci
status=$?
echo $status
Hors ligne
#3 Le 01/06/2016, à 10:21
- psylo24
Re : [Résolu] Boucle dans un script de sauvegarde
Bonjour,
Je n'ai pas regardé en détail, mais dans ces 2 lignesecho $? status=$?
status va être égal au code de retour du echo.
Il faut que tu fasses cecistatus=$? echo $status
Merci pour ta réponse mais j'ai déja essayé status=$? mais ca ne marchait pas, j'ai alors revu l'ensemble du script :
#!/bin/bash
file="ty"
function getBDD () {
#Si fichier existe
[ -f "$file" ]
#Si $? = 0 donc si fichier existe alors on continue la boucle
if [ $? == 0 ]
then
echo "$file trouvé"
mv $file ta
echo "on deplace $file vers ta"
boucle=0
else
echo "$file , non trouvé , poursuite de la boucle.."
fi
}
boucle=1
while [ "$boucle" == 1 ]; do
getBDD
#echo The previous function has a return value of $?
sleep 3
done
echo "On continue le script..."
Mon probléme est résolu
Merci en tout cas
Hors ligne
#4 Le 01/06/2016, à 10:31
- pingouinux
Re : [Résolu] Boucle dans un script de sauvegarde
De plus, tu parcourais la dernière boucle tant que [ $status != 1 ], alors qu'il ne pouvait prendre que les valeurs 0, 2 ou 3. Ça ne risquait pas de s'arrêter.
Hors ligne