无法在 Jenkins 管道内运行 shell 脚本

R.V*_*R.V 2 shell jenkins jenkins-pipeline

我能够运行以下 shell 脚本,但无法从 Jenkins 管道代码运行。

尝试 1。

node('buildnode') {

def value = "Myvalue"

def key = "Mykey"

sh '''

DATA=$(printf "%-50s \"$key\"" "$value")

echo "$DATA"

'''

}
Run Code Online (Sandbox Code Playgroud)

输出:

++ printf '%-50s ' ''
+ DATA=' 
Run Code Online (Sandbox Code Playgroud)

尝试2:

试过 sh " " "

DATA=$(printf "%-50s \"$key\"" "$value")

echo "$DATA"

" " "
Run Code Online (Sandbox Code Playgroud)

输出::

美元符号后的非法字符串体字符;解决方案:要么转义文字美元符号,"\$5"要么将值表达式括起来"${5}"

有人能帮我吗?

Tin*_*vec 5

这应该有效。

node('buildnode') {
    def value = "Myvalue" 
    def key = "Mykey"

    sh """
    DATA=\$(printf "%-50s \"${key}\" \"${value}\"")
    echo "\$DATA"
    """
}
Run Code Online (Sandbox Code Playgroud)

下调用新的子shell时也需要转义$ """ """

DATA=$(printf "%-50s \"${key}\" \"${value}\"")
Run Code Online (Sandbox Code Playgroud)