Comment passer des arguments à un script appelé par une commande source?

J’appelle un script via la commande source et je veux transmettre des arguments au script.

J’ai vérifié la man source , le bash retourne:

: [arguments]
Aucun effet; la commande ne fait que développer des arguments et effectuer des redirections spécifiées. Un code de sortie nul est renvoyé.

nom de fichier source [arguments]
Lire et exécuter des commandes à partir du nom de fichier dans l’environnement shell actuel et renvoyer le statut de sortie de la dernière commande exécutée à partir du nom de fichier. Si filename ne contient pas de barre oblique, les noms de fichiers dans PATH sont utilisés pour trouver le répertoire contenant le nom de fichier. Le fichier recherché dans PATH n’a pas besoin d’être exécutable. Lorsque bash n’est pas en mode posix, le répertoire en cours est recherché si aucun fichier n’est trouvé dans PATH. Si l’option sourcepath de la commande intégrée shopt est désactivée, le PATH n’est pas recherché. Si des arguments sont fournis, ils deviennent les parameters de position lors de l’exécution du nom de fichier. Sinon, les parameters de position sont inchangés. Le statut de retour est l’état de la dernière commande sortie du script (0 si aucune commande n’est exécutée) et false si le nom de fichier n’est pas trouvé ou ne peut pas être lu.

Il n’y a pas d’exemples, alors je ne le comprends pas.

Créez un fichier test.sh avec le contenu suivant:

 echo "I was given $# argument(s):" printf "%s\n" "$@" 

puis le source à partir d’une session shell interactive:

 $ source ./test.sh a 'bc' I was given 2 argument(s): a bc 

Vous accédez donc aux arguments comme vous le feriez dans un script bash classique, avec $@ ou $1 , $2 , $3 , etc.

Pour comparaison, lancez-le comme un script normal:

 $ bash ./test.sh a 'bc' I was given 2 argument(s): a bc