Jenkinsパイプライン、sh、引用符、スペース

Jenkinsパイプライン、sh、引用符、スペース

shJenkinsパイプラインの一部としてコマンドを設定しようとしています。コマンドには、値のリストが提供されるパラメーターがあります。この値にはスペースがあります。

私は成功しなかった多くのもの、配列、脱出などを試しました。

例は次のとおりです。

# In Jenkins task I configure env variable:
VALUE_LIST=("Value One" "Value Two" "Value Three")

# In pipeline:
...
sh "command --param ${env.VALUE_LIST[@]}"
...

これは私がこれを行うために努力した方法の1つにすぎないことを理解してください。

次の結果コマンドが必要です。

command --param "Value One" "Value Two" "Value Three"

私が達成できる最善は

command --param Value One Value Two Value Three

これは明らかに動作しません

答え1

これはうまくいきます。

printf "%s\0" "${VALUE_LIST[@]}" | xargs -0  sh -c 'command --param "$@"' command_name

値を印刷xargsし、区切り文字として null を使用します。次に、値を引数としてコマンドをxargs呼び出してsh実行しますsh。最後の部分は、command_nameユーザーが指定した名前でコマンドを表します。これはこの構成では必須です。それ以外の場合、コマンドはリストの最初の値を受け取りません"$@"

関連情報