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[@]}"
...

이것은 제가 이 작업을 수행하기 위해 노력한 방법 중 하나일 뿐이라는 점을 이해해 주십시오.

다음과 같은 결과 명령이 필요합니다.

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사용자가 제공한 이름으로 명령을 나타냅니다. 이는 이 구성에서 필수입니다. 그렇지 않으면 command는 목록의 첫 번째 값을 받지 않습니다 "$@".

관련 정보