150 votes

Puis-je appeler une fonction d'un script shell à partir d'un autre script shell ?

J'ai 2 scripts shell.

Le second script shell contient les fonctions suivantes : second.sh

func1 
func2

Le premier.sh appellera le deuxième script shell avec quelques paramètres et appellera func1 et func2 avec quelques autres paramètres spécifiques à cette fonction.

Voici l'exemple de ce dont je parle

second.sh

val1=`echo $1`
val2=`echo $2`

function func1 {

fun=`echo $1`
book=`echo $2`

}

function func2 {

fun2=`echo $1`
book2=`echo $2`


}

first.sh

second.sh cricket football

func1 love horror
func2 ball mystery

Comment puis-je y parvenir ?

215voto

anubhava Points 172509

Refacturer votre script second.sh comme ceci :

func1 {
   fun="$1"
   book="$2"
   printf "func=%s,book=%s\n" "$fun" "$book"
}

func2 {
   fun2="$1"
   book2="$2"
   printf "func2=%s,book2=%s\n" "$fun2" "$book2"
}

Et puis appelez ces fonctions à partir du script first.sh comme ceci :

source ./second.sh
func1 love horror
func2 ball mystery

SORTIE :

func=love,book=horror
func2=ball,book2=mystery

87voto

larsks Points 23184

Vous ne pouvez pas appeler directement une fonction dans un autre script shell.

Vous pouvez déplacer vos définitions de fonction dans un fichier séparé, puis les charger dans votre script ., comme ceci :

. /path/to/functions.sh

Cela interprétera functions.sh comme si son contenu était présent dans votre fichier à ce stade. Il s'agit d'un mécanisme commun pour la mise en œuvre de bibliothèques partagées de fonctions shell.

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