Déclarations de fonctions dans un script Bash ou Shell?

Y a-t-il une telle chose dans bash ou au moins quelque chose de similaire (contournement) comme les déclarations avancées, bien connues en C / C ++, par exemple?

Ou alors il y a une telle chose parce que, par exemple, elle est toujours exécutée en une seule passe (ligne après ligne)?

S’il n’y a pas de déclaration préalable, que dois-je faire pour rendre mon script plus lisible? C’est plutôt long et ces définitions de fonctions au début, mélangées avec des variables globales, rendent mon script moche et difficile à lire / à comprendre)? Je demande à apprendre quelques bonnes pratiques connues pour de tels cas.


Par exemple:

 # something like forward declaration function func # execution of the function func # definition of func function func { echo 123 } 

Bonne question J’utilise un motif comme celui-ci pour la plupart de mes scripts:

 #!/bin/bash main() { foo bar baz } foo() { } bar() { } baz() { } main "$@" 

Vous pouvez lire le code de haut en bas, mais il ne commence pas réellement à s’exécuter jusqu’à la dernière ligne. En passant "$@" à main (), vous pouvez accéder aux arguments de la ligne de commande $1 , $2 et autres, comme vous le feriez normalement.

Lorsque mes scripts bash augmentent trop, j’utilise un mécanisme include:

Fichier allMyFunctions :

 foo() { } bar() { } baz() { } 

Fichier main :

 #!/bin/bash . allMyfunctions foo bar baz