Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Archive de la liste aide - [Aide] petit souci sur un script bash
Bonsoir,

Merci à tous les deux pour les réponses. Ça fonctionne bien  
maintenant. Pour info, j'ai gardé le while sans boucle infinie, j'ai  
trouvé ça plus élégant.
Merci
Benoit




----------------message d'origine-----------------
De: "R. Daneel Olivaw" [rdaneel.olivaw at gmail.com  ]
Pour: aide at lea-linux.org  Date: Mon, 06 Apr 2015 23:53:27 -0400
-------------------------------------------------


> Hello,
>
> Le 2015-04-06 13:36, benoit a écrit :
>> Bonjour,
>> J'ai un petit souci avec un script qui fait mes sauvegardes. Mon
>> objectif est de relancer rsync en cas de coupure de la connexion.
>
> Ce que tu sembles faire:
> Tu lances le rsync et tu affiches l'état puis tu quittes la boucle infine ?
>
> Ce que j'imagine que tu veux faire:
> Tu lances le script de sauvegarde et tant que le statut de sortie n'est
> pas '0' tu recommences le rsync.
>
> Comme Peko a déjà exposé, il y a plusieurs problèmes, dont le principal
> est le test du if.
>
>> while [ 1 ]
>> do
>>     rsync $OPTIONS $DIRS zelec at 192.168.5.104  :/home/zelec
>>     if [ "$?"="0" ] ; then
>>         echo "ok"
>>         exit
>>     else
>>         echo "pas ok"
>>         exit
>>     fi
>> done
>>
>>
>> Problème, li if ne vérifie pas la condition et passe toujours au then
>> Sachant que echo $? me retourne bien des codes différents de 0 en cas
>> d'erreur.
>
> Pour cette erreur en particulier, le '=' sans espaces est la cause du
> problème. Aussi tester du texte quand tu sais que tu vas avoir un
> chiffre ce n'est pas idéal. Dans ce cas '-eq' (equal) ou '-ne' (not
> equal) est indiqué.
>
> Il est tard dans cette partie du globe, je vais donc te proposer 2
> scripts un poil plus efficaces:
>
> -- code --
> #!/usr/bin/env bash
>
> OPTIONS="tes options pour rsync"
> DIRS="liste de tes dossiers"
> REMOTE="zelec at 192.168.5.104  :/home/zelec"
>
> exit_status=1
> while [ ${exit_status} -ne 0 ]
> do
>   rsync ${OPTIONS} ${DIRS} ${REMOTE}
>   exit_status=${?}
> done
> echo "sauvegarde terminée"
> -- code --
>
> Ou si tu veux vraiment une boucle infinie:
>
> -- code --
> #!/usr/bin/env bash
>
> OPTIONS="tes options pour rsync"
> DIRS="liste de tes dossiers"
> REMOTE="zelec at 192.168.5.104  :/home/zelec"
>
> while true
> do
>   rsync ${OPTIONS} ${DIRS} ${REMOTE} && echo "ok" || echo "pas ok"
> done
> -- code --
>
> Si tu as besoin de d'explications, n'hésite pas à récrire.
>
>> Merci
>> Benoit
>
> À +++
>
> R. Daneel Olivaw,
> The Human Robot Inside.
>
> _______________________________________________
> Aide mailing list
> Aide at lea-linux.org   http://lists.lea-linux.org/listinfo/aide
>



Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons