내가 직면 한 문제는 인수가있는 명령을 docker run
에 전달하는 방법입니다. 문제는 docker run
이 명령과 인수를 단일 문자열로 사용하지 않는다는 것입니다. 불행하게도이 작동하지 않습니다docker에 문자열로 인수가있는 명령 전달
#!/bin/bash -x
DOCKER_COMMAND='bash -c "(cd build && make)"'
docker run --rm -it myImage "$DOCKER_COMMAND"
:
#!/bin/bash
docker run --rm -it myImage bash -c "(cd build && make)"
그러나 변수의 값으로 명령 및 인수를 고려 : 그들은 같은 docker run
개별 일류 인수로 제공해야
+ docker run --rm -it myImage 'bash -c "(cd build && make)"'
docker: Error response from daemon: oci runtime error: exec: "bash -c \"(cd build && make)\"": stat bash -c "(cd build && make)": no such file or directory.
약간의 변화 DOCKER_COMMAND
의 인용을 제거 : docker run
은 대체를 이해하지 않기 때문에 :
#!/bin/bash -x
DOCKER_COMMAND='bash -c "(cd build && make)"'
docker run --rm -it myImage $DOCKER_COMMAND
결과 :이 스크립트 내부 docker run
에 별개의 명령과 인수로 전달되도록
+ docker run --rm -it myImage 'bash -c "(cd build && make)"'
build: -c: line 0: unexpected EOF while looking for matching `"'
build: -c: line 1: syntax error: unexpected end of file
이 어떻게 변수에서 문자열을 확장 할 수 있습니다? 인 docker run
명령의 구문과
질문을 최소한으로 줄여야한다고 생각합니다. (예를 들어, 도커가 관련된 것이 중요한 이유) 내게는 다음과 같이 들립니다. "환경 변수를 사용하여 스크립트에 매개 변수를 구문 분석하려면 어떻게해야합니까?" –
@MichaWiedenmann은 귀하의 의견을 보내 주셔서 감사합니다. 실제로 Docker가 인수를 수락하는 방법과 환경 변수에서이를 추출하는 방법에 대한 것입니다. 대부분의 명령은 따옴표로 묶은 문자열로 작성할 수 있기 때문에 정상적으로 오지는 않지만 docker는 별도의 인수가 필요합니다 어떤 배경을 추가하겠습니다. – meowsqueak
@MichaWiedenmann ok, 상당히 간단하게했습니다. – meowsqueak