【发布时间】:2021-12-10 15:29:17
【问题描述】:
所以我有一个在 IF 语句中运行的简单脚本。我总是得到: 语法错误:文件意外结束(预期“fi”) 我想知道这可能是什么解决方案?
def call(Map config) {
withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'JENKINS_AWS'],
sshUserPrivateKey(credentialsId: 'JENKINS-SSH', keyFileVariable: 'SSH_KEY')]) {
sh """
#!/bin/bash
source add_ssh_key "${SSH_KEY}"
source init_env "${TARGET_STAGE}"
source create-bastion-pod "${PROMETHEUS_PUSHGATEWAY}" "${PROMETHEUS_PUSHGATEWAY_PORT}"
if [ ${TARGET_STAGE} == 'dev' ]; then
cat <<-EOF | curl --data-binary @- \${BASTION_URL}/metrics/job/sone_job
# TYPE some_metric counter
some_metric{label="val1"} 42
EOF
fi
delete-bastion-pod
"""
}
}
【问题讨论】:
-
结束分隔符似乎没有使用制表符缩进。基本上,解析器在解析 here 文档的同时看到脚本的结尾。
-
三引号是怎么回事?这是在python中吗?
-
@WilliamPursell 一条现已删除的评论提到了 Groovy。
-
@JeffHolt 确实是的:)
-
curl应该从sh继承其标准输入,因此您可能可以使用cat ... | sh ...,但不清楚这是如何执行的。此外,似乎还有一个可能会造成严重破坏的杂散反引号。