我有一个 bash 脚本,我想从 groovy 中执行它
some_shell_script.sh param1 "report_date=`some_function 0 \"%Y%m%d\"`"
该脚本从命令行成功运行,但是当我尝试从 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
我有以下错误
serr: sh: some_function: command not found
同时
which some_function
返回函数定义,如
some_function ()
{
;some definition here
}
看起来当我从 groovy 运行外部脚本时,它会在没有父进程上下文的情况下启动不同的进程。我的意思是不存在父进程的函数定义。
任何人都知道如何应对这种情况?