i ont un script bash que je veux exécuter à partir groovy commeRun processus externe de groovy
some_shell_script.sh param1 "report_date=`some_function 0 \"%Y%m%d\"`"
ce script fonctionne avec succès à partir de la ligne de commande, mais lorsque je tente de l'exécuter à partir Groovy
def command = "some_shell_script.sh param1 "report_date=`some_function 0 \"%Y%m%d_%H%M%S\"`""
def sout = new StringBuffer()
def serr = new StringBuffer()
//tried to use here different shells /bin/sh /bin/bash bash
ProcessBuilder pb = new ProcessBuilder(['sh', '-c',command])
Process proc = pb.start()
proc.consumeProcessOutput(sout, serr)
def status = proc.waitFor()
println 'sout: ' + sout
println 'serr: ' + serr
i ont l'erreur suivante
serr: sh: some_function: command not found
en même temps
which some_function
retours définition fonctionnelle comme
some_function()
{
;some definition here
}
ressemble quand je lance script externe de Groovy il lancer le processus différent sans contexte de processus parent. Je veux dire aucune définition de fonction du processus parent existe.
Quelqu'un sait comment gérer une telle situation?
pas sûr que cela soit lié mais ** export -f some_function ** session précédente groovy résolu le problème – user1582639
Cela fonctionnera pour votre environnement de connexion. Le 'export -f' force la définition de la fonction dans l'environnement du script, qui à son tour la transmet à l'instance bash créée par ProcessBuilder. * Attention *, si vous donnez le script groovy à d'autres, leur environnement peut ne pas avoir votre définition de 'some_function'. –