Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在外部bash脚本中使用全局groovy变量_Bash_Groovy - Fatal编程技术网

如何在外部bash脚本中使用全局groovy变量

如何在外部bash脚本中使用全局groovy变量,bash,groovy,Bash,Groovy,这就是我在groovy中所做的: sh 'echo "'+params.TEST+'"' echo params.TEST 两者都返回“hello world”,这正是我所期待的。 现在我想在外部bash脚本test.sh中使用该变量: #!/bin/bash echo "'+params.TEST+'" 我扩展了groovy脚本: sh 'echo "'+params.TEST+'"' echo params.TEST sh './test.sh' 但是最后一个命令,脚本的执行不是打印我

这就是我在groovy中所做的:

sh 'echo "'+params.TEST+'"'
echo params.TEST
两者都返回“hello world”,这正是我所期待的。 现在我想在外部bash脚本
test.sh
中使用该变量:

#!/bin/bash
echo "'+params.TEST+'"
我扩展了groovy脚本:

sh 'echo "'+params.TEST+'"'
echo params.TEST
sh './test.sh'

但是最后一个命令,脚本的执行不是打印我的参数。我错过了什么?如何使其工作

您可以尝试将其作为参数传递给shell脚本,例如

sh 'echo "'+params.TEST+'"'
echo params.TEST
sh './test.sh "' +params.TEST + '"'
并将shell脚本中的参数用作

#!/bin/bash
echo $1

您可以尝试将其作为参数传递给shell脚本,例如

sh 'echo "'+params.TEST+'"'
echo params.TEST
sh './test.sh "' +params.TEST + '"'
并将shell脚本中的参数用作

#!/bin/bash
echo $1

无论何时运行外部脚本,您的环境都将从父进程继承。这里有两个选项:

  • 创造全新的环境(可能会有风险,因为你可能会忘记一些事情)
  • 基于父环境创建新环境
在这两种情况下,您都需要操作
映射
,并将变量添加到新环境中

Groovy脚本(ProcessBuilder):

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE --- 

def script = "./file.sh"
def pb = new ProcessBuilder(script).inheritIO()

def variable = "Variable value"

Map<String, String> env = pb.environment()
env.put( "variable", variable )

Process p = pb.start()
p.waitFor()

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

def script = "./file.sh"

def variable = "Variable value"

myenv = new HashMap(System.getenv())
myenv.put("variable", variable )

String[] envarray = myenv.collect { k, v -> "$k=$v" }

def std_out = new StringBuilder()
def std_err = new StringBuilder()

proc = script.execute( envarray, null )

proc.consumeProcessOutput(std_out, std_err)

println std_out

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

#!/bin/bash

echo "Hello from script"
echo $variable

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8<---切这里---切这里---切这里---切这里--
def script=“./file.sh”
def pb=新的ProcessBuilder(脚本).inheritario()
def variable=“变量值”
Map env=pb.environment()
环境投入(“变量”,变量)
进程p=pb.start()
p、 等待()
8<---切这里---切这里---切这里---切这里---
Groovy脚本(执行方法):

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE --- 

def script = "./file.sh"
def pb = new ProcessBuilder(script).inheritIO()

def variable = "Variable value"

Map<String, String> env = pb.environment()
env.put( "variable", variable )

Process p = pb.start()
p.waitFor()

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

def script = "./file.sh"

def variable = "Variable value"

myenv = new HashMap(System.getenv())
myenv.put("variable", variable )

String[] envarray = myenv.collect { k, v -> "$k=$v" }

def std_out = new StringBuilder()
def std_err = new StringBuilder()

proc = script.execute( envarray, null )

proc.consumeProcessOutput(std_out, std_err)

println std_out

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

#!/bin/bash

echo "Hello from script"
echo $variable

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8<---切这里---切这里---切这里---切这里---
def script=“./file.sh”
def variable=“变量值”
myenv=newhashmap(System.getenv())
myenv.put(“变量”,变量)
字符串[]envarray=myenv.collect{k,v->“$k=$v”}
def std_out=新的StringBuilder()
def std_err=新的StringBuilder()
proc=script.execute(envarray,null)
过程consumeProcessOutput(标准输出,标准错误)
打印标准输出
8<---切这里---切这里---切这里---切这里---
Shell脚本:

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE --- 

def script = "./file.sh"
def pb = new ProcessBuilder(script).inheritIO()

def variable = "Variable value"

Map<String, String> env = pb.environment()
env.put( "variable", variable )

Process p = pb.start()
p.waitFor()

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

def script = "./file.sh"

def variable = "Variable value"

myenv = new HashMap(System.getenv())
myenv.put("variable", variable )

String[] envarray = myenv.collect { k, v -> "$k=$v" }

def std_out = new StringBuilder()
def std_err = new StringBuilder()

proc = script.execute( envarray, null )

proc.consumeProcessOutput(std_out, std_err)

println std_out

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

#!/bin/bash

echo "Hello from script"
echo $variable

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8<---切这里---切这里---切这里---切这里---
#!/bin/bash
回显“脚本中的你好”
echo$变量
8<---切这里---切这里---切这里---切这里---

无论何时运行外部脚本,您的环境都将从父进程继承。这里有两个选项:

  • 创造全新的环境(可能会有风险,因为你可能会忘记一些事情)
  • 基于父环境创建新环境
在这两种情况下,您都需要操作
映射
,并将变量添加到新环境中

Groovy脚本(ProcessBuilder):

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE --- 

def script = "./file.sh"
def pb = new ProcessBuilder(script).inheritIO()

def variable = "Variable value"

Map<String, String> env = pb.environment()
env.put( "variable", variable )

Process p = pb.start()
p.waitFor()

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

def script = "./file.sh"

def variable = "Variable value"

myenv = new HashMap(System.getenv())
myenv.put("variable", variable )

String[] envarray = myenv.collect { k, v -> "$k=$v" }

def std_out = new StringBuilder()
def std_err = new StringBuilder()

proc = script.execute( envarray, null )

proc.consumeProcessOutput(std_out, std_err)

println std_out

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

#!/bin/bash

echo "Hello from script"
echo $variable

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8<---切这里---切这里---切这里---切这里--
def script=“./file.sh”
def pb=新的ProcessBuilder(脚本).inheritario()
def variable=“变量值”
Map env=pb.environment()
环境投入(“变量”,变量)
进程p=pb.start()
p、 等待()
8<---切这里---切这里---切这里---切这里---
Groovy脚本(执行方法):

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE --- 

def script = "./file.sh"
def pb = new ProcessBuilder(script).inheritIO()

def variable = "Variable value"

Map<String, String> env = pb.environment()
env.put( "variable", variable )

Process p = pb.start()
p.waitFor()

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

def script = "./file.sh"

def variable = "Variable value"

myenv = new HashMap(System.getenv())
myenv.put("variable", variable )

String[] envarray = myenv.collect { k, v -> "$k=$v" }

def std_out = new StringBuilder()
def std_err = new StringBuilder()

proc = script.execute( envarray, null )

proc.consumeProcessOutput(std_out, std_err)

println std_out

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

#!/bin/bash

echo "Hello from script"
echo $variable

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8<---切这里---切这里---切这里---切这里---
def script=“./file.sh”
def variable=“变量值”
myenv=newhashmap(System.getenv())
myenv.put(“变量”,变量)
字符串[]envarray=myenv.collect{k,v->“$k=$v”}
def std_out=新的StringBuilder()
def std_err=新的StringBuilder()
proc=script.execute(envarray,null)
过程consumeProcessOutput(标准输出,标准错误)
打印标准输出
8<---切这里---切这里---切这里---切这里---
Shell脚本:

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE --- 

def script = "./file.sh"
def pb = new ProcessBuilder(script).inheritIO()

def variable = "Variable value"

Map<String, String> env = pb.environment()
env.put( "variable", variable )

Process p = pb.start()
p.waitFor()

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

def script = "./file.sh"

def variable = "Variable value"

myenv = new HashMap(System.getenv())
myenv.put("variable", variable )

String[] envarray = myenv.collect { k, v -> "$k=$v" }

def std_out = new StringBuilder()
def std_err = new StringBuilder()

proc = script.execute( envarray, null )

proc.consumeProcessOutput(std_out, std_err)

println std_out

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---

#!/bin/bash

echo "Hello from script"
echo $variable

8< --- CUT HERE --- CUT HERE --- CUT HERE --- CUT HERE ---
8<---切这里---切这里---切这里---切这里---
#!/bin/bash
回显“脚本中的你好”
echo$变量
8<---切这里---切这里---切这里---切这里---

谢谢,有没有可能通过在groovy中创建和使用env var form my global属性来使用env var而不是bash脚本中的参数?谢谢,有没有可能通过在groovy中创建和使用env var form my global属性来使用env var而不是bash脚本中的参数?