sh
Jenkins 파이프라인의 일부로 명령을 설정 하려고 합니다 . 명령에는 값 목록이 제공되는 매개 변수가 있습니다. 이 값에는 공백이 있습니다.
나는 성공하지 못한 채 많은 것들, 배열, 탈출 등을 시도했습니다.
예는 다음과 같습니다.
# 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는 목록의 첫 번째 값을 받지 않습니다 "$@"
.