警告:此处文档第 2 行由文件结尾分隔(需要“EOF”)

警告:此处文档第 2 行由文件结尾分隔(需要“EOF”)

我在这里读了很多,但仍然找不到如何解决这个问题:

steps.wrap([$class: 'AnsiColorBuildWrapper', 'colorMapName': 'XTerm']) {
    steps.withCredentials([steps.usernamePassword(credentialsId: "test", usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD')]) {
        steps.sh """                                                      
        curl  --silent -u \${GIT_USERNAME}:\${GIT_PASSWORD} -H "Content-Type: application/json" -X POST https://some.url --data-binary @- <<-EOF
        {
        "state": "$STATE",
        "key": "\$JOB_NAME",
        "name": "\$BUILD_TAG",
        "url": "\$BUILD_URL",
        "description": "$DESCRIPTION"
        }
        EOF"""

它位于詹金斯共享库中。我读过我必须避免空格,但我没有看到我在这里创建了哪些空格。我不断收到此错误:

line 11: warning: here-document at line 2 delimited by end-of-file (wanted `EOF')

答案1

除了可能创建无效的 JSON(除非您可以假设您的变量已经是 JSON 编码)之外,您的此处文档还存在缩进问题。

您用于<<-EOF启动包含 JSON 文档的此处文档。这样的here-document应该由字符串分隔,EOF并且该字符串需要左齐平(根本没有缩进)或者它可以使用制表符缩进(不是空格)。同一行上不能有空格或任何类型的其他字符字符串EOF

我的猜测是代码是使用空格缩进的,这就是为什么 shell 的解析器找不到终止EOF字符串的原因。

相关内容