我在下面有一个函数,它在脚本部分使用单引号,因为我要传递凭据。我遇到过建议出于安全目的应使用单引号而不是双引号的文档。我只是想回显一个用户名,看看这个值是否被正确使用,但我似乎无法让一个值出现。
def my_func(String username) {
withEnv(["user=abc"]) {
sh(encoding:'UTF-8', script: '''
#!/usr/bin/bash
set +x -e
echo "Username is $user"
''')
}
当我查看控制台中的日志时,我所看到的只是
"Username is "
。我遇到了这个使用 withEnv 的建议,因为由于在脚本块中使用了单引号,我无法直接插入${user}
。我已经尝试了一些事情,比如用 \$user
逃脱,但没有显示任何东西。或者echo Username is \\"$user\\"
给了Username is ""
经过一些额外的测试,似乎有两件事导致了这个错误。
一个是我需要将我的
withEnv
变量从 user
更新为 username
。 $user
是 Jenkins 中的保留变量吗?
我还需要更新 echo 命令中引号的使用方式。这背后的原因是什么,因为我仍在努力理解 Groovy 插值。
echo Username is "$username"