Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 10:24] Hypathie [D ) Code de retour et les tests] |
doc:programmation:shells:debuter-avec-les-scripts-shell-bash [03/06/2014 12:44] Hypathie [D ) État de sortie et les tests] |
||
---|---|---|---|
Ligne 426: | Ligne 426: | ||
</note> | </note> | ||
- | ====3) Créer des variables avec les tableaux ==== | ||
- | Les variables de chaque case d'un tableau, ont elles aussi une position définie par l'utilisateur, ou automatiquement lors de la création du tableau.\\ | ||
- | Pour plus de précision sur la création et l'utilisation de tableau dans les scripts voir ici : [[atelier:chantier:page-man-bash-v-les-tableaux]] | ||
- | ====4) création de variables quelques commandes à connaître==== | + | =====D ) État de sortie et les tests===== |
- | ===declare=== | + | ====1) le code de retour ==== |
- | ===let=== | + | Il ne faut pas confondre le code de retour et le résultat d'une commande. Le résultat est ce qui s'inscrit sur la sortie standard. |
- | =====D ) Code de retour et les tests===== | + | **- L'exécution de tous programmes et de toutes fonctions renvoie une valeur numérique appelée code de retour.** |
- | ====1) le code de retour et la commande exit ==== | + | |
+ | **- Il est envoyé 0 si tout c'est bien passé lors de l'exécution, et un nombre entre 1 et 255 s'il y a eu une erreur.** | ||
+ | |||
+ | **- Pour récupérer le code de retour on utilise le paramètre spécial $?** | ||
+ | |||
+ | **- Il y a des codes de retour particuliers, par exemple :** | ||
+ | <code user> | ||
+ | blabla | ||
+ | </code> | ||
+ | puis | ||
+ | <code user> | ||
+ | echo $? | ||
+ | </code> | ||
+ | Retour : | ||
+ | <code> | ||
+ | 127 | ||
+ | </code> | ||
+ | //On peut chercher dans les codes d'erreur de bash que 127 est le code de retour pour les commandes qui n'ont pas pu être trouvées. | ||
+ | // | ||
+ | |||
+ | **- L'état de sortie vrai ou faux ( 0 ou autre chose) est utilisé avec :** | ||
+ | |||
+ | - enchaînements conditionnels : | ||
+ | - les tests ( commende test, double crochets, if/else, case) | ||
+ | |||
+ | === enchaînement conditionnel=== | ||
+ | **Parmi les opérateurs d'enchaînement de commandes ** | ||
+ | **(voir : [[atelier:chantier:bash-les-differents-caracteres-speciaux#les-operateurs-de-controle|les opérateurs de contrôle]])** | ||
+ | <code> | ||
+ | || && ; <retour-chariot> | ||
+ | </code> | ||
+ | |||
+ | * **L'opérateur "&&" utilise le code de retour :** avec cet opérateur, chaque commande d'une suite est exécuté l'une après l'autre si le code retour de la première est 0 (c'est-à-dire si elle a fonctionné).\\ | ||
+ | |||
+ | * **L'opérateur "||" utilise le code de retour :** la commande suivante est exécutée si le code de retour de la première est différente de zéro, c'est-à-dire si elle n'a pas fonctionné. | ||
+ | |||
+ | Exemple : soit le dossier "Mon-dossier" non-vide; le dossier "mon-dossier" vide; et le dossier "mondossier" inexistant. | ||
+ | <code bash> | ||
+ | cd ~/Mon-dossier && ls # => titi toto | ||
+ | cd ~/mon-dossier || pwd # pas de retour : la première commande renvoie 0 | ||
+ | et rester sur place n'est pas une erreur | ||
+ | cd ~/mondossier 2>/dev/null || echo "le dossier mondossier n'existe pas" && read -p "voulez-vous le créer [oui/non] ? " reponse && ( [ $reponse == non ] && echo " le dossier ne sera pas créé") || ( [ $reponse == oui ] && echo " le dossier va être créé" ) #; && mkdir ~/mondossier | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===Utiliser la commande exit === | ||
+ | |||
+ | **- syntaxe :** | ||
+ | exit + nombre de 1 à 3 chiffre(s) | ||
+ | |||
Ligne 514: | Ligne 561: | ||
===Alternatives : case=== | ===Alternatives : case=== | ||
- | ** Attention case n'utilise pas d'expression régulière mais du "pattern matching" | + | ** Attention case n'utilise pas d'expression régulière mais du "pattern matching"** |
* syntaxe de case : | * syntaxe de case : | ||
Ligne 544: | Ligne 591: | ||
echo "Vous avez passé le paramètre 'cucu'" | echo "Vous avez passé le paramètre 'cucu'" | ||
echo "un peu d'humour !" | echo "un peu d'humour !" | ||
- | echo "Ré-essayé un paramètre de votre choix." | + | echo "Ré-essayé avec titi, puis avec toto." |
;; | ;; | ||
titi|toto) | titi|toto) |