我试图将groovy shell脚本的输出保存在变量中。
test = sh(returnStdout: true, script: "#!/bin/bash -l && export VAULT_ADDR=http://ourVault.de:8100 && export VAULT_SKIP_VERIFY=true && vault auth ${VAULT_TOKEN} && vault read -field=value test/${RELEASE2}/ID").trim()
但是没有输出,我想知道为什么它不捕获输出?
如果我这样做:
def test = ""
sh"""#!/bin/bash -l
export VAULT_ADDR=http://ourVault.de:8100
export VAULT_SKIP_VERIFY=true
vault auth ${VAULT_TOKEN}
${test}=\"\$(vault read -field=value emea/test/hockey/ios/${RELEASE2}/appID)\"
"""
我在控制台中看到输出。但是,它也不会被捕获。还有其他捕获多行sh脚本输出的方法吗?
答案 0 :(得分:2)
${}
语法无法正常工作。只能用于将内容添加到字符串。
returnStdout
选项也可以与三引号脚本一起使用。因此,您可能想要执行以下操作:
def test = sh returnStdout:true, script: """
#!/bin/bash -l
export VAULT_ADDR=http://ourVault.de:8100
export VAULT_SKIP_VERIFY=true
vault auth ${VAULT_TOKEN}
echo "\$(vault read -field=value emea/test/hockey/ios/${RELEASE2}/appID)" """