2009-06-19 7 views

Répondre

51

Bien sûr - dans votre script, où vous voulez utiliser la fonction, vous pouvez écrire une commande comme

source function.sh 

ce qui équivaut à inclure le contenu de function.sh dans le fichier au point où la commande est courir. Notez que function.sh doit être dans l'un des répertoires dans $PATH; Si ce n'est pas le cas, vous devez spécifier un chemin absolu.

+3

fonction.sh peut être n'importe où dans votre chemin. Si bash est en mode posix, il ne cherchera pas dans le répertoire courant. Tout est expliqué dans la page de manuel. – camh

+0

Certes, je l'ai mélangé avec d'autres choses. –

+0

Disons que 'function.sh' a aussi du code. Est-ce que 'source function.sh' va aussi exécuter le code? – user1527227

9

Oui, vous pouvez localiser toutes vos fonctions dans un fichier (ou des fichiers) commun (s). C'est exactement ce que je fais avec toutes mes fonctions utilitaires. J'ai un utility.shinc seul dans mon répertoire qui est utilisé par tous mes programmes avec:

. $HOME/utility.shinc 

qui exécute le script dans le contexte de l'enveloppe actuelle. Ceci est important - si vous exécutez simplement le script include, il s'exécutera dans un sous-shell et toutes les modifications ne seront pas propagées au shell actuel.

Vous pouvez faire la même chose pour des groupes de scripts. Si cela fait partie d'un "produit", j'aurais tendance à mettre tous les scripts, et tous les scripts inclus, dans un seul répertoire shell pour s'assurer que tout est localisé.

-2

Oui ... vous pouvez! Ajoutez source nom_fonction dans votre script. Je préfère créer une variable eg.VAR = $ (nom_fonction), si vous ajoutez la source nom_fonction après #!/Bin/bash, alors votre script exécute d'abord la tâche de fonction importée, puis votre tâche de script actuelle, donc il est préférable de créer une variable n'importe où dans le script. merci .. Espoir son travail pour vous :)

+0

Pourquoi copiez-vous les réponses qui ont été postées il y a 8 ans? –

+0

Pour mieux comprendre..J'ai posté plus brièvement que le précédent. –

Questions connexes