groovyのように実行したいbashスクリプトがあります
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から外部スクリプトを実行すると、親プロセスのコンテキストなしで別のプロセスが開始されるように見えます。親プロセスの関数定義が存在しないことを意味します。
誰もがそのような状況に対処する方法を手がかりを持っていますか?