docker exec 명령에서 문자열(<<<)과 함께 위치 매개변수를 사용하는 방법은 무엇입니까?

docker exec 명령에서 문자열(<<<)과 함께 위치 매개변수를 사용하는 방법은 무엇입니까?

내가하려는 일은 다음과 같습니다.

    docker exec -it $1 /bin/bash <<< $CONTAINER_ID

하지만 이것은 작동하지 않습니다.

출력: "docker exec"에는 인수가 2개 이상 필요합니다.

<<<는 $1을 무시하고 STDIN을 완전히 대체하는 것 같습니다. 하나의 매개변수만 <<<로 바꾸는 것이 가능합니까? 별칭을 알고 있지만 나에게는 작동하지 않습니다. 표준 도구만 사용하여 동료에게 명령을 전달할 수 있어야 합니다. 이 경우 동료는 명령 센터에 있는 하나 이상의 매개변수를 대체하는 마지막 변수만 변경하게 됩니다.

답변1

<<<작업에 잘못된 도구입니다. 매개변수 전달과 관련이 없는 표준 입력(stdin)을 대체합니다. 인수와 표준 입력은 모두 명령 입력 형식이지만 서로 완전히 독립적입니다. xargsstdin을 매개변수로 변환하는 것이 가능하지만, 그렇게 하면 애초에 존재하지 않았던 방법을 사용하기보다는 실제로 문제를 해결하려고 하는 것입니다.

실제 목표와 제약 조건이 무엇인지 잘 모르겠지만 함수를 정의하는 것이 아마도 원하는 것을 달성하는 가장 깔끔한 방법일 것입니다.

execit() {
    docker exec -it "$1" /bin/bash
}

( execit원하는 함수 이름으로 바꾸십시오.) 그런 다음 예를 들어 실행하십시오 execit "$CONTAINER_ID".

이것이 원하는 작업에 적합하지 않은 경우 다음으로 가장 깨끗한 솔루션은 Kamil Maciorowski가 의견에서 제안한 것입니다.

sh -c 'exec docker exec -it "$1" /bin/bash' sh "$CONTAINER_ID"

답변2

Kamil Maciorowski 덕분에 내가 찾던 방향을 찾았고 해결책을 찾았습니다. 이것은 내가 필요한 것을 실행하는 명령입니다.

xargs -o -I{} docker exec -it {} /bin/bash <<< $CONTAINER_ID

관련 정보