#!/bin/bash # La fonction "fct1" a pour condition d'exécution de ses commandes # un test qui vérifie qu'elle a un argument. # Comme elle en a un, il s'exécute 'echo $1' et 'return 0' qui attribue le code de retour 0. # && : exécution de la seconde cmd, si le code de retour de la première est 0 : c'est le cas # donc exécution de 'echo $? # || : exécution de la seconde cmd, si le code de retour de la première est différente de zéro # donc pas d'exécution de 'echo "coucou"' function fct1 { if [ $1 ]; then echo "$1" return 0 fi } fct1 yep && echo $? || echo "coucou" echo " " # pour espacer le retour # pas d'argument, donc c'est le 'else' qui s'exécute # donc exécution de 'echo "pas d'argument...' et de 'return 1' # || : exécution de la seconde cmd, si le code de retour de la première est différente de zéro # donc exécution de 'echo "coucou"' fct2() { if [ $1 ]; then echo "$1" else echo "pas d'argument à cette fonction" return 1 echo "après return" # On est sortie de la fonction : pas d'exécution de 'echo' fi } fct2 || echo "coucou"