Contenu | Rechercher | Menus

Annonce

Ubuntu-fr vend de superbes t-shirts et de belles clés USB 32Go
Rendez-vous sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/02/2020, à 16:06

oliver2004

[Résolu] Récupérer une valeur $? et condition dans bash

Bonjour,
Petite question... car tout petit souci.
Je suis en train de mettre en place un script de backup journalier via rsync en ssh
À la fin du script je me fais envoyer un mail et je voudrais pouvoir lire dans le mail si le backup s'est bien déroulé ou s'il y a eu des erreurs.
Pour ceci j'ai besoin de récupérer la variable $? mais impossible de la mettre dans une variable dans le script shell.
Par exemple :

#! /bin/sh

rsync -e 'ssh -p [....]
echo $?

À l'exécution, le code d'exit existe bien mais comment je fais pour le récupérer pour ensuite pouvoir l'utiliser dans une condition ?

#! /bin/sh

rsync -e 'ssh -p [....]

EXIT_CODE = $?
echo 'Exitcode : '$EXIT_CODE

...n'affiche rien...
C'est normal ?

Dernière modification par oliver2004 (Le 18/02/2020, à 00:54)


Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#2 Le 16/02/2020, à 16:17

kamaris

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Pas d'espace dans les affectations de variable en shell :

EXIT_CODE=$?

Hors ligne

#3 Le 16/02/2020, à 16:26

oliver2004

Re : [Résolu] Récupérer une valeur $? et condition dans bash

kamaris a écrit :

Pas d'espace dans les affectations de variable en shell :

EXIT_CODE=$?

Bonjour et merci pour vos retours rapides !
Effectivement, ce sont les espaces dans l'affectation de variable. Je note donc ceci : "Pas d'espace dans les affectations de variable en shell" smile
Merci, c'est résolu


Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#4 Le 16/02/2020, à 16:51

oliver2004

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Rebonjour,
je reviens vit fait dans ce topic par rapport à l'usage de cette variable $? dans une condition...
J'ai fait ceci :

# Definition du code de sortie
EXIT_CODE=$?

if (( $EXIT_CODE=0 )); then
        RESULT_FILES_BACKUP='Success'
elif (( $EXIT_CODE=1 )); then
        RESULT_FILES_BACKUP='Syntax or usage error'
elif (( $EXIT_CODE=2 )); then
        RESULT_FILES_BACKUP='Protocol incompatibility'
elif (( $EXIT_CODE=3 )); then
        RESULT_FILES_BACKUP='Errors selecting input/output files, dirs'
elif (( $EXIT_CODE =4 )); then
        RESULT_FILES_BACKUP='Requested  action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified th'
elif (( $EXIT_CODE=5 )); then
        RESULT_FILES_BACKUP='Error starting client-server protocol'
elif (( $EXIT_CODE=6 )); then
        RESULT_FILES_BACKUP='Daemon unable to append to log-file'
elif (( $EXIT_CODE=10 )); then
        RESULT_FILES_BACKUP='Error in socket I/O'
elif (( $EXIT_CODE=11 )); then
        RESULT_FILES_BACKUP='Error in file I/O'
elif (( $EXIT_CODE=12 )); then
        RESULT_FILES_BACKUP='Error in rsync protocol data stream'
elif (( $EXIT_CODE=13 )); then
        RESULT_FILES_BACKUP='Errors with program diagnostics'
elif (( $EXIT_CODE=14 )); then
        RESULT_FILES_BACKUP='Error in IPC code'
elif (( $EXIT_CODE=20 )); then
        RESULT_FILES_BACKUP='Received SIGUSR1 or SIGINT'
elif (( $EXIT_CODE=21 )); then
        RESULT_FILES_BACKUP='Some error returned by waitpid()'
elif (( $EXIT_CODE=22 )); then
        RESULT_FILES_BACKUP='Error allocating core memory buffers'
elif (( $EXIT_CODE=23 )); then
        RESULT_FILES_BACKUP='Partial transfer due to error'
elif (( $EXIT_CODE=24 )); then
        RESULT_FILES_BACKUP='Partial transfer due to vanished source files'
elif (( $EXIT_CODE=25 )); then
        RESULT_FILES_BACKUP='The --max-delete limit stopped deletions'
elif (( $EXIT_CODE=30 )); then
        RESULT_FILES_BACKUP='Timeout in data send/receive'
elif (( $EXIT_CODE=35 )); then
        RESULT_FILES_BACKUP='Timeout waiting for daemon connection'
elif (( $EXIT_CODE=127 )); then
        RESULT_FILES_BACKUP='Rsync is NOT installed on the system'
else
        RESULT_FILES_BACKUP='Unexplained error'
fi

Mais lors de l'exécution j'obtiens ces erreurs :

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1668) [generator=3.1.2]
/home/server/.scripts/backup: 14: /home/server/.scripts/backup: 23=0: not found
/home/server/.scripts/backup: 16: /home/server/.scripts/backup: 23=1: not found
/home/server/.scripts/backup: 18: /home/server/.scripts/backup: 23=2: not found
/home/server/.scripts/backup: 20: /home/server/.scripts/backup: 23=3: not found
/home/server/.scripts/backup: 22: /home/server/.scripts/backup: 23: not found
/home/server/.scripts/backup: 24: /home/server/.scripts/backup: 23=5: not found
/home/server/.scripts/backup: 26: /home/server/.scripts/backup: 23=6: not found
/home/server/.scripts/backup: 28: /home/server/.scripts/backup: 23=10: not found
/home/server/.scripts/backup: 30: /home/server/.scripts/backup: 23=11: not found
/home/server/.scripts/backup: 32: /home/server/.scripts/backup: 23=12: not found
/home/server/.scripts/backup: 34: /home/server/.scripts/backup: 23=13: not found
/home/server/.scripts/backup: 36: /home/server/.scripts/backup: 23=14: not found
/home/server/.scripts/backup: 38: /home/server/.scripts/backup: 23=20: not found
/home/server/.scripts/backup: 40: /home/server/.scripts/backup: 23=21: not found
/home/server/.scripts/backup: 42: /home/server/.scripts/backup: 23=22: not found
/home/server/.scripts/backup: 44: /home/server/.scripts/backup: 23=23: not found
/home/server/.scripts/backup: 46: /home/server/.scripts/backup: 23=24: not found
/home/server/.scripts/backup: 48: /home/server/.scripts/backup: 23=25: not found
/home/server/.scripts/backup: 50: /home/server/.scripts/backup: 23=30: not found
/home/server/.scripts/backup: 52: /home/server/.scripts/backup: 23=35: not found
/home/server/.scripts/backup: 54: /home/server/.scripts/backup: 23=127: not found

Bref, en php, faire une condition pour moi est aisé, mais c'est loin d'être pareil en shell... neutral


Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#5 Le 16/02/2020, à 16:53

erresse

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Bonjour,
Juste une remarque en passant, sur la tendance à modifier les messages après coup dans la conversation...
Ici, à la lecture du fil, on ne comprend pas la remarque de kamaris "Pas d'espace dans les affectations de variables en shell", puisque le message précédent ne présente justement PAS d'espace dans le nom de variable. Et c'est ensuite qu'on réalise que le messager initial qui devait définir "EXIT CODE=$?" a été modifié (pour correction, bien sûr, mais ça perturbe quand même) en "EXIT_CODE=$?".
Lorsque ce n'est pas nécessaire, pourquoi faire ces corrections qui perturbent la compréhension de la conversation ? Autant laisser le message avec son erreur en l'état, la lecture des messages suivants vient justement éclaircir le problème en corrigeant l'erreur.
Bon, ce n'est pas très important dans le contexte présent, mais dans d'autres conversations, la modification, voire la suppression de messages dans le flot de la conversation peut la rendre assez incompréhensible à terme.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#6 Le 16/02/2020, à 16:57

oliver2004

Re : [Résolu] Récupérer une valeur $? et condition dans bash

erresse a écrit :

Bonjour,
Juste une remarque en passant, sur la tendance à modifier les messages après coup dans la conversation...
Ici, à la lecture du fil, on ne comprend pas la remarque de kamaris "Pas d'espace dans les affectations de variables en shell", puisque le message précédent ne présente justement PAS d'espace dans le nom de variable. Et c'est ensuite qu'on réalise que le messager initial qui devait définir "EXIT CODE=$?" a été modifié (pour correction, bien sûr, mais ça perturbe quand même) en "EXIT_CODE=$?".
Lorsque ce n'est pas nécessaire, pourquoi faire ces corrections qui perturbent la compréhension de la conversation ? Autant laisser le message avec son erreur en l'état, la lecture des messages suivants vient justement éclaircir le problème en corrigeant l'erreur.
Bon, ce n'est pas très important dans le contexte présent, mais dans d'autres conversations, la modification, voire la suppression de messages dans le flot de la conversation peut la rendre assez incompréhensible à terme.

Bonjour, c'est juste, +1


Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#7 Le 16/02/2020, à 17:00

jplemoine

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Perso, je ne l'aurais pas écrit comme ça :

echo 'Exitcode : '$EXIT_CODE

mais

echo "Exitcode : ${EXIT_CODE}"

NB : Le fait de mettre le nom de la variable entre accolade permet de coller du texte (ce qui n'est pas le cas ici mais on ne sait jamais).


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#8 Le 16/02/2020, à 17:04

bruno

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Regarde la différence entre (( )) , [[ ]] et [ ] pour bash.

Sinon je ne vois pas l’intérêt de tout ce code puisque rsync envoie des messages d'erreurs explicites.

Hors ligne

#9 Le 16/02/2020, à 17:05

erresse

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Tes erreurs sont dues à la manière dont tu as posé les conditions. En bash, on ne teste pas avec "(( xx=yy ))"...
Je te conseille la lecture du Guide avancé d'écriture des scripts bash pour en apprendre davantage.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#10 Le 16/02/2020, à 17:14

oliver2004

Re : [Résolu] Récupérer une valeur $? et condition dans bash

bruno a écrit :

Regarde la différence entre (( )) , [[ ]] et [ ] pour bash.

Sinon je ne vois pas l’intérêt de tout ce code puisque rsync envoie des messages d'erreurs explicites.

Bonjour bruno, euh, ok, ça m'intéresse, comment e récupère cette erreur explicite en fait, ce serait en effet beaucoup plus pratique ? Car en manuel je le vois, mais le script sera automatiquement exécuté sur cron.
Par contre, j'ai vraiment essayé toutes les possibilités, [[ [ ( ((, rien ne marche... pas facile le bash sad

Dernière modification par oliver2004 (Le 16/02/2020, à 17:16)


Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#11 Le 16/02/2020, à 17:17

kamaris

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Une autre chose : il faut que tu différencies bash et sh, qui sous ubuntu pointe vers dash.
En dash (shell qui respecte la norme posix), la syntaxe ((…)) (sans $ devant les parenthèses) correspond à un sous-shell dans un sous-shell, pas à une évaluation arithmétique (laquelle est un bashisme).
Si tu veux faire du bash, mets #!/bin/bash en entrée de tes scripts.

Dernière modification par kamaris (Le 16/02/2020, à 17:18)

Hors ligne

#12 Le 16/02/2020, à 17:17

oliver2004

Re : [Résolu] Récupérer une valeur $? et condition dans bash

erresse a écrit :

Tes erreurs sont dues à la manière dont tu as posé les conditions. En bash, on ne teste pas avec "(( xx=yy ))"...
Je te conseille la lecture du Guide avancé d'écriture des scripts bash pour en apprendre davantage.

Bonjour erresse, merci pour le lien, je jette un oeil...


Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#13 Le 16/02/2020, à 17:49

bruno

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Si ton script est exécuté par une tâche cron, toute sortie du script via echo ou printf sera envoyée par courriel à l'adresse spécifiée dans la variable MAILTO du crontab.
Une façon de faire pourrait être :

#!/bin/bash

retour=$(rsync -av /truc/a/sauvegarder/ /endroit/ou/copier/ 2>&1)
echo "$retour"

Hors ligne

#14 Le 16/02/2020, à 18:22

Watael

Re : [Résolu] Récupérer une valeur $? et condition dans bash

@jplemoine: si, justement, on sait :

ce [...] n'est pas le cas ici

donc, pas d'accolades.

@erresse

En bash, on ne teste pas avec "(( xx=yy ))"

si, mais pas comme ça.
comme ça :

(( var == otrVar ))

eval, c'est mal.

Hors ligne

#15 Le 16/02/2020, à 18:30

jplemoine

Re : [Résolu] Récupérer une valeur $? et condition dans bash

1 - A noter : En fait, je mets systématiquement les accolades au cas où une évolution fasse que l'on rendre dans le cas où il faille les mettre.
2 - C'était juste au cas où afin qu'il ne passe pas beaucoup de temps sur ça (ce qui a été mon cas).


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#16 Le 16/02/2020, à 18:38

erresse

Re : [Résolu] Récupérer une valeur $? et condition dans bash

@Watael:
Ben, c'est bien ce que voulais dire : si les deux termes sont collés "xx=yy" c'est une affectation, pas un test qui doit être lui, "xx == yy".
Mais je reconnais que ma phrase n'était pas des plus claire en effet...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#17 Le 16/02/2020, à 18:43

Watael

Re : [Résolu] Récupérer une valeur $? et condition dans bash

quand tu feras évoluer ton script, alors ajoute des accolades.
a priori, elles n'ont pas lieu d'être.

et c'est une surcharge visuelle inutile.

quand on apprend une information inutile (ou fausse), on la répète. Jusqu'à ce qu'on se rende compte de sa nature réelle (inutile ou fausse).
mais en attendant, cette information est propagée à d'autres, qui feront pareil : répéter, et diffuser.

Dernière modification par Watael (Le 16/02/2020, à 18:45)


eval, c'est mal.

Hors ligne

#18 Le 16/02/2020, à 20:34

nany

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Bonjour,


Hormis la conversation intéressante sur les bons usages, je trouve tous ces elif avec un test à chaque ligne très moches.
Un case permet de s’affranchir de ces tests et (je trouve) donne une lecture plus fluide.

# Definition du code de sortie
EXIT_CODE=$?

case $EXIT_CODE in
    0) RESULT_FILES_BACKUP='Success';;
    1) RESULT_FILES_BACKUP='Syntax or usage error';;
    2) RESULT_FILES_BACKUP='Protocol incompatibility';;
    3) RESULT_FILES_BACKUP='Errors selecting input/output files, dirs';;
    4) RESULT_FILES_BACKUP='Requested  action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified th';;
    5) RESULT_FILES_BACKUP='Error starting client-server protocol';;
    6) RESULT_FILES_BACKUP='Daemon unable to append to log-file';;
    10) RESULT_FILES_BACKUP='Error in socket I/O';;
    11) RESULT_FILES_BACKUP='Error in file I/O';;
    12) RESULT_FILES_BACKUP='Error in rsync protocol data stream';;
    13) RESULT_FILES_BACKUP='Errors with program diagnostics';;
    14) RESULT_FILES_BACKUP='Error in IPC code';;
    20) RESULT_FILES_BACKUP='Received SIGUSR1 or SIGINT';;
    21) RESULT_FILES_BACKUP='Some error returned by waitpid()';;
    22) RESULT_FILES_BACKUP='Error allocating core memory buffers';;
    23) RESULT_FILES_BACKUP='Partial transfer due to error';;
    24) RESULT_FILES_BACKUP='Partial transfer due to vanished source files';;
    25) RESULT_FILES_BACKUP='The --max-delete limit stopped deletions';;
    30) RESULT_FILES_BACKUP='Timeout in data send/receive';;
    35) RESULT_FILES_BACKUP='Timeout waiting for daemon connection';;
    127) RESULT_FILES_BACKUP='Rsync is NOT installed on the system';;
    *) RESULT_FILES_BACKUP='Unexplained error';;
esac

Le mot de passe sudo ne s'affiche pas
Comment bien utiliser les balises BBcode
LIBRARIES ARE NOT BOOK-STORES! − Une souris, des souris. Un souci, des soucis. Une énigme résolue, un problème résolu.
J’ai forké le compteur-couche-tard.

Hors ligne

#19 Le 16/02/2020, à 21:03

Watael

Re : [Résolu] Récupérer une valeur $? et condition dans bash

+1


eval, c'est mal.

Hors ligne

#20 Le 16/02/2020, à 22:06

MicP

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Bonsoir

Ou alors :

exitCode=$?        # Récupération du code de sortie

tablErreurs=(
[0]="Success"
[1]="Syntax or usage error"
[2]="Protocol incompatibility"
[3]="Errors selecting input/output files, dirs"
[4]="Requested action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified that is supported by the client and not by the server"
[5]="Error starting client-server protocol"
[6]="Daemon unable to append to log-file"
[10]="Error in socket I/O"
[11]="Error in file I/O"
[12]="Error in rsync protocol data stream"
[13]="Errors with program diagnostics"
[14]="Error in IPC code"
[20]="Received SIGUSR1 or SIGINT"
[21]="Some error returned by waitpid()"
[22]="Error allocating core memory buffers"
[23]="Partial transfer due to error"
[24]="Partial transfer due to vanished source files"
[25]="The --max-delete limit stopped deletions"
[30]="Timeout in data send/receive"
[35]="Timeout waiting for daemon connection"
[127]="Rsync is NOT installed on the system"
)

resultFileBackup="${tablErreurs[$exitCode]}"
[ -z "$resultFileBackup" ] && resultFileBackup="Unexplained error (Exit code : $exitCode)"

Dernière modification par MicP (Le 16/02/2020, à 22:17)

Hors ligne

#21 Le 17/02/2020, à 17:17

oliver2004

Re : [Résolu] Récupérer une valeur $? et condition dans bash

bruno a écrit :

Si ton script est exécuté par une tâche cron, toute sortie du script via echo ou printf sera envoyée par courriel à l'adresse spécifiée dans la variable MAILTO du crontab.
Une façon de faire pourrait être :

#!/bin/bash

retour=$(rsync -av /truc/a/sauvegarder/ /endroit/ou/copier/ 2>&1)
echo "$retour"

Que d'informations !!

@bruno : Du coup bruno, super de pouvoir récuperer les infos de transfert pour les afficher sur le mail. +1

@jplemoine et Watael, je note cette histoire de crochets et d'accolades

@nani et MicP, j'utilise beaucoup les array dans mes développent php, je vois que bien que codé différemment, c'est la même dynamqiue. Je vais mettre ça en place, c'est effectivement plus "beau"... +1

Merci à tous pour vos commentaires ! Je fais mes tests et mettrai le topic à résolu selon smile


Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#22 Le 17/02/2020, à 17:45

oliver2004

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Du coup, je dresse le tableau comme ceci :

tablErreurs=(
[0]="0 : Success"
[1]="1 : Syntax or usage error"
[2]="2 : Protocol incompatibility"
[3]="3 : Errors selecting input/output files, dirs"
[4]="4 : Requested action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified that is supported by the client and "
[5]="5 : Error starting client-server protocol"
[6]="6 : Daemon unable to append to log-file"  
[10]="10 : Error in socket I/O"
[11]="11: Error in file I/O"
[12]="12 : Error in rsync protocol data stream"
[13]="13 : Errors with program diagnostics"
[14]="14 : Error in IPC code"
[20]="20 : Received SIGUSR1 or SIGINT"
[21]="21 : Some error returned by waitpid()"
[22]="22 : Error allocating core memory buffers"
[23]="23 : Partial transfer due to error"
[24]="24 : Partial transfer due to vanished source files"
[25]="25 : The --max-delete limit stopped deletions"
[30]="30 : Timeout in data send/receive"
[35]="35 : Timeout waiting for daemon connection"
[127]="127 : Rsync is NOT installed on the system" 
)

Mais le terminal me retourne cette erreur sur la ligne du tableau :

Syntax error: "(" unexpected

Donc une erreur sur la parenthèse après tablErreurs=
Bizarre, j'ai cherché et c'est bien comme ceci que l'on dresse un tableau non ?


Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#23 Le 17/02/2020, à 17:55

nany

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Regarde ton code avant le tableau. Tu as probablement oublié de fermer quelque chose (; ) }…).


Le mot de passe sudo ne s'affiche pas
Comment bien utiliser les balises BBcode
LIBRARIES ARE NOT BOOK-STORES! − Une souris, des souris. Un souci, des soucis. Une énigme résolue, un problème résolu.
J’ai forké le compteur-couche-tard.

Hors ligne

#24 Le 17/02/2020, à 17:59

oliver2004

Re : [Résolu] Récupérer une valeur $? et condition dans bash

nany a écrit :

Regarde ton code avant le tableau. Tu as probablement oublié de fermer quelque chose (; ) }…).

Bonjour, je ne crois pas :

#! /bin/sh

# Nous mettons en place un miroir des backups des fichers en production ainsi que des backups de la bdd en production

# Gestion des erreur pour ce backup
#       On dresse le tableau

tablErreurs=(

Bureaux: Ubuntu Serveur Edition 16.04 LTS, Kubuntu sur portables Compaq CQ42, Lubuntu sur portable HP 550, Kubuntu sur DELL Inspiron 14...
Mon laptop: Kubuntu sur DELL
Déjà 10 ans que toutes les machines sont LINUX dans mon entreprise...

Hors ligne

#25 Le 17/02/2020, à 18:04

lynn

Re : [Résolu] Récupérer une valeur $? et condition dans bash

Bonjour,

Avec bash, ça fonctionne :

#!/bin/bash


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

En ligne