쉘 스크립트에서 여러 줄 명령을 주석 처리하는 방법은 무엇입니까?


19

길고 스위치가 많은 명령을 호출 할 때는 셸 스크립트로 작성하는 것이 좋습니다. 그러한 스크립트에서 줄을 주석 처리하는 쉬운 방법이 있습니까? 다음 방법을 시도했지만 작동하지 않습니다.

# the \ is also commented out, resulting in "command" and "--good-switch".
command \
  #--bad-switch \
  --good-switch \

# seems to send an extra argument to the command
command \
  \ #--bad-switch \
  --good-switch
shell 

1
두 번째는 공백이 인수로 전송되도록합니다 ( \ 다음 문자를 이스케이프하여 줄 바꿈을 숨기고 공백을 중요하게 만듭니다).
geekosaur

답변:


14

이것은 옵션 일 수 있습니다 : 명령과 args를 배열에 저장 한 다음 실행하십시오

# build the command
cmd=( ls
        -F
      # -a   # comment out this option temporarily
        -l
    )
# $cmd is now an array with 3 elements

# execute it
"${cmd[@]}"

이건 bash
-only

3

나는 항상 명령 직후에 주석이 달린 것을 옮겼습니다.

command \
  --good-switch
# --bad-switch          with explanation here, if needed

0

문제는 줄을 파싱하기 전에 슬래시가 제거되므로 첫 번째 명령은 마치 작성한 것처럼 파싱됩니다 command #--bad-switch --good-switch. 명령 순서가 매우 긴 경우, 예를 들어 위 또는 아래에 한 줄씩 주석 블록을 작성하고 각각을 설명하거나 변수에 매개 변수를 저장할 수 있습니다 (종종 인용 부호가있는 두통이 있지만) 특수 문자).


1
그것은 사실이 아닌 것 같습니다. --good-switch명령으로 해석됩니다.


0

주석은 예상 라인 체인을 제동하므로 가장 간단한 해결 방법은 주석이있는 라인을 목록 끝에서 이동하는 것입니다.

command \
  --good-switch \
  # --bad-switch \

순서를 변경하지 않으려면 :명령 (콜론 유틸리티, 아무것도하지 않는)을 사용하여 연결된 행을 그대로 유지할 수 있습니다.

command \
  `: --bad-switch `\
  --good-switch \

나는 이것을 테스트했다.

function command { 
  echo "num args:" $#;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.