여러 줄 명령: 한 줄 주석 처리

여러 줄 명령: 한 줄 주석 처리

나는 인수가 많은 명령에 대한 스크립트에서 (가독성을 높이기 위해) 다음 형식을 사용하는 것을 좋아합니다.

docker run \
 --rm \
 -u root \
 -p 8080:8080 \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v "$HOME":/home \
 jenkinsci/blueocean

그러나 때로는 이러한 매개변수 중 하나를 주석 처리하고 싶을 때가 있습니다. 예를 들면 다음과 같습니다.

# -p 8080:8080  

EOL은 반환으로 해석되고 명령이 실패하기 때문에 작동하지 않습니다. 또한 이것을 시도했습니다:

\ # -p 8080:8080

이것도 작동하지 않습니다.

질문: 매개변수가 여전히 자체 줄에 있지만 스크립트를 실행할 수 있도록 매개변수를 주석 처리하는 방법이 있습니까?

답변1

줄의 일부를 주석 처리할 수 없습니다.

줄 바꿈이 이스케이프되므로 명령은 실제로 (셸 파서에 대한) 단일 라인이며 단일 라인의 일부는 주석 처리될 수 없습니다(끝 부분 제외).

대신, 편집기에서 원래 명령을 복사하여 완전히 주석 처리하고 수정된 명령은 주석 처리하지 않은 상태로 남겨둘 수도 있습니다.

docker run \
 --rm \
 -u root \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v "$HOME":/home \
 jenkinsci/blueocean

# Was originally:
# docker run \
# --rm \
# -u root \
# -p 8080:8080 \
# -v jenkins-data:/var/jenkins_home \
# -v /var/run/docker.sock:/var/run/docker.sock \
# -v "$HOME":/home \
# jenkinsci/blueocean

-p또는 가끔 옵션과 해당 인수를 제거하거나 변경하려는 경우 ( bash또는 동일한 배열 구문을 사용하는 쉘을 가정):

port=( -p 8080:8080 )

docker run \
 --rm \
 -u root \
 "${port[@]}" \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v "$HOME":/home \
 jenkinsci/blueocean

그런 다음 할당을 변경하거나 주석을 달면 됩니다 port.

한 단계 더 나아가세요:

docker_run_args=(
    --rm 
    -u root 
    -p 8080:8080 
    -v jenkins-data:/var/jenkins_home 
    -v /var/run/docker.sock:/var/run/docker.sock 
    -v "$HOME":/home 
    jenkinsci/blueocean
)

docker run "${docker_run_args[@]}"

배열 할당 내에서 한 줄을 주석 처리하는 데 문제가 없습니다.

docker_run_args=(
    --rm 
    -u root 
#    -p 8080:8080 
    -v jenkins-data:/var/jenkins_home 
    -v /var/run/docker.sock:/var/run/docker.sock 
    -v "$HOME":/home 
    jenkinsci/blueocean
)

docker run "${docker_run_args[@]}"

답변2

빈 명령 대체를 사용할 수 있습니다.

docker run \
 --rm \
 -u root \
 $(: -p 8080:8080 ) \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v "$HOME":/home \
 jenkinsci/blueocean

관련 정보