在我的 Jenkins 管道中出现 groovy 语法问题

Getting groovy syntax issue in my Jenkins pipeline

我的管道需要一个简单的脚本:-

sh '''podname=$(kubectl get pods -n my-namespace --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep my-pod)
          echo "my name is $podname"'''

我需要通过我的 jenkins 声明性管道调用的是我稍后可以在我的脚本中使用的 kubectl 命令的值。如果我 运行 直接在 linux 服务器上运行,它工作得很好,但不知何故通过 groovy shell 调用总是导致未终止引号的语法错误,非法美元文字等 我该如何解决这个问题?

语法对我来说很好,除了这个,在命令中间:

"\n"

这将被解释为一个实际的换行符,这可能不是您想要的?也许试试这个,让 \n 序列传递给命令:

"\n"

如果仍然没有帮助... 根据 docs:

Runs a Bourne shell script, typically on a Unix node. Multiple lines are accepted. 

An interpreter selector may be used, for example: #!/usr/bin/perl

所以另一个建议是尝试将适当的 shebang 添加到您的脚本中...因为没有理由结果应该与您在 shell.[=15] 上 运行 时的结果不同=]