157 votes

Comment inclure un fichier dans un script shell bash

Existe-t-il un moyen d'inclure un autre script shell dans un script shell pour pouvoir accéder à ses fonctions ?

Comme dans PHP, vous pouvez utiliser la directive include avec d'autres fichiers PHP afin d'exécuter les fonctions qui y sont contenues en appelant simplement le nom de la fonction.

237voto

sputnick Points 31663

Il suffit de mettre dans votre script :

source FILE

Ou

. FILE # POSIX compliant

$ LANG=C help source
source: source filename [arguments]
Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

71voto

Fancyoung Points 1386

Les réponses ci-dessus sont correctes, mais si vous exécutez un script dans un autre dossier, il y aura un problème.

Par exemple, a.sh et b.sh sont dans le même dossier, une utilisation . ./b.sh pour inclure b.

Lorsque vous exécutez le script hors du dossier, par exemple, xx/xx/xx/a.sh, le fichier b.sh ne sera pas trouvé : ./b.sh: No such file or directory.

Alors j'utilise

. $(dirname "$0")/b.sh

35voto

Paulpro Points 54844

Oui, utilisez la source ou le formulaire court qui est juste . :

. other_script.sh

8voto

Satish Kumar Points 89

La syntaxe est source <file-name>

ex. source config.sh

script - config.sh

USERNAME="satish"
EMAIL="satish@linuxconcept.com"

script d'appel -

#!/bin/bash
source config.sh
echo Welcome ${USERNAME}!
echo Your email is ${EMAIL}.

Vous pouvez apprendre à inclure un script bash dans un autre script bash ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X