Bonjour
Je suis en train de me prendre la tête sur ce tout petit script et je ne comprend pas pourquoi lorsque $Erreur=1, il ne passe pas dans la première condition (il y a toujours au moins 1 ligne d'information dans mon fichier "erreur".)
Erreur=$(cat /home/erreur | wc -l)
case $Erreur in
1)
echo La sauvegarde de SERVER effectuée >> /var/log/save.log ;;
*)
cat /home/erreur >> /var/log/save.log
echo Problème de sauvegarde sur SERVER | smbclient -M ADMINISTRATEUR ;;
esac
En affectant Erreur=1, ça marche...
Comprend pas....:(
# pourquoi $(...) ?
Posté par Jack DeNoumea (site web personnel) . Évalué à -1.
essaye plutot
Erreur=`cat /home/erreur | wc -l`
PS: ` = altgr + 7
[^] # Re: pourquoi $(...) ?
Posté par miky57 . Évalué à 1.
Ta ligne donne le même résultat (1) mais le case s'en tape toujours....:(
# Debugage
Posté par webseb . Évalué à 1.
Donc :
Erreur=$(cat /home/erreur | wc -l)
echo $Erreur
Ca te permettra de savoir si ton erreur se situe au niveau de l'affectation ou dans le `case`
Tu pourra enlever l'echo une fois que ton script marchera
# Détails
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
donne le même résultat que
il y a toujours au moins 1 ligne d'information dans mon fichier "erreur"
As tu essayé un echo $Erreur voir la valeur ?
Et sinon, pourquoi faire un case quand tu n'as que 2 cas ?
[^] # Re: Détails
Posté par miky57 . Évalué à 1.
Autrement 'case' car dans un avenir proche j'aurai d'autres conditions.
# Et les " "
Posté par totof2000 . Évalué à 1.
case $Erreur in
"1")
Il me semble que case traite des chaines de caractère, mais je ne suis pklus très sur.
[^] # Re: Et les " "
Posté par miky57 . Évalué à 1.
[^] # Re: Et les " "
Posté par totof2000 . Évalué à 1.
[^] # Re: Et les " "
Posté par totof2000 . Évalué à 1.
case mot in [ motif [ | motif ] ... ) liste ;; ] ... esac
successivement avec chacun des motifs en utilisant
les mêmes règles de correspondance que pour les
expansions de noms de fichiers (voir le paragraphe
Développement des noms de fichiers plus bas).
Quand une correspondance est trouvée, la liste
associée est exécutée. Dès qu'un motif correct a
été trouvé, il n'y a plus d'autre essais de corre
spondance. Le code de retour est zéro si aucun
motif ne correspond, sinon il s'agit du code de la
liste exécutée.
# " 1"
Posté par locnet . Évalué à 2.
# chezmoiçamarche.com
Posté par Gyro Gearllose . Évalué à 1.
Si je fais :
$ echo Coucou > /tmp/erreur && ./test
J'obtiens :
La sauvegarde de SERVER effectuée
Et si je fais :
$ > /tmp/erreur && ./test
J'obtiens :
Problme de sauvegarde sur SERVER
(END)
[^] # Re: chezmoiçamarche.com
Posté par miky57 . Évalué à 1.
[^] # Re: chezmoiçamarche.com
Posté par locnet . Évalué à 1.
#!/bin/bash
[^] # Re: chezmoiçamarche.com
Posté par miky57 . Évalué à 1.
[^] # Re: chezmoiçamarche.com
Posté par totof2000 . Évalué à 1.
Tu as peut-être oublié un ;; quelque part ou un esac (ce ne serait pas du case imbriqué?)
[^] # Re: chezmoiçamarche.com
Posté par miky57 . Évalué à 1.
Alors je ne sais pourquoi mais $Erreur contient des espaces et ce termine par '1' . Pourquoi ????
Si quelqu' un a une soluce pour supprimer les espaces.....
Enfin merci pour votre aide à tous.
[^] # Re: chezmoiçamarche.com
Posté par gnujsa . Évalué à 2.
Erreur=$(wc -l /home/erreur | sed -e 's/ //g')
ou
Erreur=$(wc -l /home/erreur | tr -d ' ')
ou encore mieux en utilisant les classes de caractères, pour englober aussi les tab
Erreur=$(wc -l /home/erreur | tr -d '[:space:]')
[^] # Re: chezmoiçamarche.com
Posté par miky57 . Évalué à 1.
Je te remerci,
Erreur=$(wc -l /home/erreur | sed -e 's/ //g')
marche très bien, par contre les 2 autres lignes génèrent des erreurs.
Merci pour votre aide :)
PS:je comprend pas d'ou viennent les espaces, surtout que:
echo $Erreur
ne les affichait pas.:(
[^] # Re: chezmoiçamarche.com
Posté par flechter . Évalué à 1.
Tu aurais vue les espaces si tu avais tapé :
echo "$Erreur"
Il y avait plus simple que un sed :
typeset -i Erreur=$(wc -l /home/erreur)
le -i forçant le type integer et donc plus de problème :)
[^] # Re: chezmoiçamarche.com
Posté par miky57 . Évalué à 1.
1
merci pour
typeset -i Erreur=$(wc -l /home/erreur)
[^] # Re: chezmoiçamarche.com
Posté par miky57 . Évalué à 1.
Erreur=$(cat /home/erreur | wc -l | tr -d ' ')
Erreur=$(cat /home/erreur | wc -l | tr -d '[:space:]')
Ciao
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.