在一个发行版上工作的数组声明在另一发行版上不起作用

在一个发行版上工作的数组声明在另一发行版上不起作用

我有一个在 Debian 11 上运行的 bash 脚本,它工作得很好,我必须将它移至 Ubuntu Server(可能是 22.04),但现在它停止工作了。我的脚本如下:

BRANCHES=("master" "develop")
for BRANCH in "${BRANCHES[*]}"
do
   echo Building $BRANCH
   git checkout "$BRANCH"
   #Code doing tasks
done

还尝试了“${BRANCHES[@]}”
它给了我输出:

Building ("master" "develop")
error: pathspec '("master" "develop")' did not match any file(s) known to git

我不明白为什么它在 Debian 上运行良好但在 Ubuntu 上不起作用。我的猜测是它不是在 bash 中执行的(但我已经#!/bin/bash +x在脚本之上)。 AFAIK 我无法轻松检查它,因为我通过 Jenkins shell 执行来执行此脚本,并且没有对服务器的 SSH 访问权限。

答案1

该问题是由 EnvInject 插件未正确设置要构建的分支引起的。通过编写简单的 python 脚本将数组声明拆分为字符串并将该字符串添加到环境变量来修复它。然后,在脚本中,可以简单地迭代由空格分隔的字符串的所有元素。

相关内容