あるディストリビューションで動作する配列宣言は、もう一方のディストリビューションでは機能しません。

あるディストリビューションで動作する配列宣言は、もう一方のディストリビューションでは機能しません。

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シェルを実行してこのスクリプトを実行しており、サーバーへのSSHアクセス権がないため、簡単に確認できません。

ベストアンサー1

この問題は、EnvInjectプラグインがビルドするブランチを正しく設定しないために発生します。配列宣言を文字列に分割し、その文字列を環境変数に追加する単純なPythonスクリプトを書くことで問題を解決しました。その後、スクリプトでスペースで区切られた文字列のすべての要素を簡単に繰り返すことができます。

おすすめ記事