[英]How to access a groovy variable in shell script in jenkins pipeline?
[英]How to use shell script variable as groovy variable in Jenkins pipeline script
我正在嘗試在 groovy 步驟中再次使用來自 sh"""""" 的 shell 腳本中設置的 VAR_NAME 值,但出現以下錯誤。 我只看到有關如何在 shell 中使用 groovy 變量的問題,但沒有看到其他方式。 提前致謝。
groovy.lang.MissingPropertyException:沒有這樣的屬性:class 的 VAR_NAME:groovy.lang.Binding
pipeline {
environment {
VAR_NAME=""
}
stages {
stage('Compute') {
steps {
sh """
#!/bin/bash
set -e
set +x
VAR_NAME=10
"""
sh "echo VAR_NAME = $VAR_NAME"
}
}
}
}
當您發出sh
指令時,會創建一個新的 shell 實例(很可能是bash
)。 像往常一樣 Unix 進程,它繼承父的環境變量。 然后您的bash
實例正在運行您的腳本。 當您的腳本設置環境變量時,將更新bash
的環境。 一旦您的腳本結束,運行該腳本的bash
進程將被銷毀,其所有環境也將隨之銷毀。
如果您想使用該 shell 實例設置的任何內容,則需要將其納入,例如:
def script_output = sh(returnStdout: true, script: """
#!/bin/bash
set -e
set +x
VAR_NAME=10
echo \$VAR_NAME
""")
script_output = script_output.trim()
VAR_NAME = script_output
echo "VAR_NAME is ${VAR_NAME}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.