[bash] Bash에 대한 인라인 코멘트?

한 줄 명령으로 단일 플래그를 주석 처리하고 싶습니다. Bash는 from # till end-of-line의견 만있는 것 같습니다 . 나는 다음과 같은 트릭을보고있다.

ls -l $([ ] && -F is turned off) -a /etc

추악하지만 아무것도 아닌 것보다 낫습니다. 더 좋은 방법이 있습니까?

다음은 작동하는 것 같지만 휴대용인지 확실하지 않습니다.

ls -l `# -F is turned off` -a /etc



답변

내가 선호하는 것은 :

Bash 스크립트에서 주석 달기

이것은 약간의 오버 헤드가 있지만 기술적으로 귀하의 질문에 대답합니다.

echo abc `#put your comment here` \
     def `#another chance for a comment` \
     xyz etc

파이프 라인의 경우 오버 헤드가없는보다 깨끗한 솔루션이 있습니다.

echo abc |        # normal comment OK here
     tr a-z A-Z | # another normal comment OK here
     sort |       # the pipelines are automatically continued
     uniq         # final comment

여러 줄 명령에 줄 설명을 넣는 방법


답변

줄을 복사하고 원래 버전을 주석 처리하는 것이 가장 쉽고 읽기 쉽습니다.

#Old version of ls:
#ls -l $([ ] && -F is turned off) -a /etc
ls -l -a /etc


답변

$(: ...) 조금 추악하지만 여전히 좋지는 않습니다.


답변

변수에 저장하는 것은 어떻습니까?

#extraargs=-F
ls -l $extraargs -a /etc


답변

다음은 여러 파이프 명령 사이의 인라인 주석에 대한 솔루션입니다.

주석 처리되지 않은 코드의 예 :

    #!/bin/sh
    cat input.txt \
    | grep something \
    | sort -r

파이프 주석 솔루션 (헬퍼 기능 사용) :

    #!/bin/sh
    pipe_comment() {
        cat -
    }
    cat input.txt \
    | pipe_comment "filter down to lines that contain the word: something" \
    | grep something \
    | pipe_comment "reverse sort what is left" \
    | sort -r

또는 원하는 경우 도우미 기능이없는 동일한 솔루션이 있지만 조금 더 지저분합니다.

    #!/bin/sh
    cat input.txt \
    | cat - `: filter down to lines that contain the word: something` \
    | grep something \
    | cat - `: reverse sort what is left` \
    | sort -r


답변

대부분의 명령은 args가 어떤 순서로든 오도록합니다. 주석 처리 된 플래그를 행의 끝으로 이동하십시오.

ls -l -a /etc # -F is turned off

그런 다음 다시 켜려면 주석 처리를 제거하고 텍스트를 제거하십시오.

ls -l -a /etc -F


답변

변수가 비어 있다는 것을 알면 주석으로 사용할 수 있습니다. 물론 비어 있지 않으면 명령이 엉망이됩니다.

ls -l $ {1 # -F가 꺼져 있습니다} -a / etc

§ 10.2. 매개 변수 대체