bazzanella : Fonctions BASH
mercredi 8 mai 2013 à 18:33Vous pouvez améliorer vos scripts shell en bash en leur intégrant des fonctions.
Une fonction bash vous permet de ne pas répéter un bout de code dans votre programme. Vous pouvez également grouper vos fonctions dans des fichiers de bibliothèques via la directive source :
Exemple de fonction bash :
#!/bin/bash # Licence GPL # Copyleft 2005 Thierry Bazzanella function OuiNon { local qst def rep qst="${1:-'Oui ou Non ? '}" def="${2}" while : do read -p "${qst}" rep || exit 1 case "$(echo "${rep:-$def}" | tr '[a-z]' '[A-Z]')" in O|OUI|Y|YES) return 0 ;; N|NON|NO) return 1 ;; "" ) : ;; *) echo "Reponse invalide: ${rep}" ;; esac done } # avec un parametre function tafonction { echo "${1} Visiteur !" return 7 # de 0 a 255 max } # Appel de ta fonction tafonction "Coucou" #Recuperation d'un code de retour de tafonction: # doit etre declaree de suite apres l'appel de tafonction CODERETOUR_TAFONCTION=$( echo $? ) VALEURRETOUR_TAFONCTION=$( tafonction "et bien" ) #Recuperation de la valeur du parametre # Retourne par tafonction # dans ton programme principal: echo "Une autre valeur de retour est : $VALEURRETOUR_TAFONCTION" echo "Le code de retour est $CODERETOUR_TAFONCTION" # Avec echo cequetuveux dans tafonction te permet de recuperer # une valeur quelconque sur l'entree standard # Par contre le return 7 te permet de recuperer un code de retour numerique # tu peux donc avec ces elements faire une fonction OuiNon de ton code # et declarer le code de cette fonction une seule fois au debut # de ton programme et l'appeler autant de fois que necessaire. if OuiNon "Etes-vous favorable a l'utilisation des fonctions ? votre reponse => " Oui then echo "OK, vous etes favorable. Vous gagnerez en efficacite" else echo "Ok, vous n'etes pas favorable. Bonjour la maintenance du code !" fi if OuiNon "Etes-vous favorable a l'utilisation de GNU/Linux ? votre reponse => " Oui then echo "OK, vous etes favorable. Vous gagnerez en efficacite" else echo "Ok, vous n'etes pas favorable. Vous preferez ce bon vieux CP/M !" fi
- #!/bin/bash
- # Licence GPL
- # Copyleft 2005 Thierry Bazzanella
- function OuiNon {
- local qst def rep
- qst="${1:-'Oui ou Non ? '}"
- def="${2}"
- while :
- do
- read -p "${qst}" rep || exit 1
- case "$(echo "${rep:-$def}" | tr '[a-z]' '[A-Z]')" in
- O|OUI|Y|YES) return 0 ;;
- N|NON|NO) return 1 ;;
- "" ) : ;;
- *) echo "Reponse invalide: ${rep}" ;;
- esac
- done
- }
- # avec un parametre
- function tafonction {
- echo "${1} Visiteur !"
- return 7 # de 0 a 255 max
- }
- # Appel de ta fonction
- tafonction "Coucou"
- #Recuperation d'un code de retour de tafonction:
- # doit etre declaree de suite apres l'appel de tafonction
- CODERETOUR_TAFONCTION=$( echo $? )
- VALEURRETOUR_TAFONCTION=$( tafonction "et bien" )
- #Recuperation de la valeur du parametre
- # Retourne par tafonction
- # dans ton programme principal:
- echo "Une autre valeur de retour est : $VALEURRETOUR_TAFONCTION"
- echo "Le code de retour est $CODERETOUR_TAFONCTION"
- # Avec echo cequetuveux dans tafonction te permet de recuperer
- # une valeur quelconque sur l'entree standard
- # Par contre le return 7 te permet de recuperer un code de retour numerique
- # tu peux donc avec ces elements faire une fonction OuiNon de ton code
- # et declarer le code de cette fonction une seule fois au debut
- # de ton programme et l'appeler autant de fois que necessaire.
- if OuiNon "Etes-vous favorable a l'utilisation des fonctions ? votre reponse => " Oui
- then echo "OK, vous etes favorable. Vous gagnerez en efficacite"
- else echo "Ok, vous n'etes pas favorable. Bonjour la maintenance du code !"
- fi
- if OuiNon "Etes-vous favorable a l'utilisation de GNU/Linux ? votre reponse => " Oui
- then echo "OK, vous etes favorable. Vous gagnerez en efficacite"
- else echo "Ok, vous n'etes pas favorable. Vous preferez ce bon vieux CP/M !"
- fi
Original post of bazzanella.Votez pour ce billet sur Planet Libre.
Articles similaires
- bazzanella : Ecrire vers un fichier distant (08/05/2013)