我有一个运行脚本文件的Jenkins Pipeline。
我已经在Jenkins之外测试了脚本,并且脚本运行完美,但是当我尝试将其作为管道的一部分运行时,出现以下错误:
/maint/git-branches.sh: line 2: syntax error: unexpected "("
脚本为:
#!/bin/bash
branches=()
eval "$(git for-each-ref --shell --format='branches+=(%(refname))' refs/heads/)"
for branch in "${branches[@]}"; do
echo "${branch##*/}"
done
我的准备阶段是:
stage ('Fetching Branches') {
steps {
script {
def branchcollection = sh (script: "sh maint/git-branches.sh", returnStdout: true).trim()
BRANCH = input message: 'Choose branch to pull from', ok: 'Ok', parameters: [choice(name: 'BRANCH', choices: "${branchCollection}", description: '')]
}
}
}
所有')'
括号都匹配,因此在任何地方都不会出现松散的括号。
答案 0 :(得分:0)
管道代码正在git-branches.sh
中显式运行sh
。在某些系统上,sh
不是Bash,并且不支持Bash特定的功能。在这种情况下,sh
似乎不支持数组。尝试将管道代码修改为... "bash maint/git-branches.sh"...
。