programing

다중 줄 명령에 줄 주석을 다는 방법

showcode 2023. 5. 5. 10:01
반응형

다중 줄 명령에 줄 주석을 다는 방법

Bash 스크립트에서 다중 행 명령을 작성하는 방법을 알고 있지만 다중 행 명령에서 각 행에 대한 주석을 추가하려면 어떻게 해야 합니까?

CommandName InputFiles      \ # This is the comment for the 1st line
            --option1 arg1  \ # This is the comment for the 2nd line
            --option2 arg2    # This is the comment for the 3nd line

그런데 아쉽게도 계속해서 댓글이.\명령을 어길 것입니다.

이렇게 하는 거예요.기본적으로 Bash의 backtick 명령 대체를 사용하면 여러 줄로 나뉘어 있더라도 긴 명령줄을 따라 어디에나 이러한 주석을 배치할 수 있습니다.echo 명령어를 예제 앞에 놓아서 예제를 실행하고 작동 방식을 확인할 수 있습니다.

echo CommandName InputFiles `#1st comment` \
             --option1 arg1 `#2nd comment` \
             --option2 arg2 `#3rd comment`

한 줄에 서로 다른 점에 여러 개의 주석을 추가할 수 있는 또 다른 예:

some_cmd --opt1 `#1st comment` --opt2 `#2nd comment` --opt3 `#3rd comment`

인수를 배열에 저장할 수 있습니다.

args=(InputFiles      # This is the comment for the 1st line
      # You can have whole lines of comments in between, useful for:
      #--deprecated-option # This isn't use any more
      --option1 arg1  # This is the comment for the 2nd line

      # And even blank lines in between for readability
      --option2 arg2  # This is the comment for the 3nd line
     )
CommandName "${args[@]}"

하지만 이것이 각 주장에 대한 의견을 허용하기 위한 목적으로만 사용된다면 약간 진부해 보인다고 생각합니다.따라서 저는 개별 인수를 참조하도록 주석을 다시 작성하고 전체 명령 위에 놓았습니다.

유감스럽게도, 일반적으로, 당신은 당신이 요구하는 것을 할 수 없습니다.명령 앞 줄에 주석을 달거나 명령 줄 끝에 단일 주석을 달거나 명령 뒤에 주석을 달 수 있습니다.

이런 식으로 명령어 내부에 주석을 삽입할 수는 없습니다.\s는 줄을 병합하려는 의도를 표현하므로 모든 의미와 목적에 대해 하나의 줄에 주석을 삽입하려고 합니다. 이는 어쨌든 작동하지 않습니다. 왜냐하면\그 효과를 얻으려면 줄의 끝에 있어야 합니다.

질문에 대한 다른 답변에 대한 pjh의 코멘트를 기반으로 대체IFS공백이 아닌 문자를 포함하지 않는 것으로 알려진 변수가 있습니다.

comment=
who ${comment# This is the command} \
    -u ${comment# This is the argument}

매개 변수 확장이 인용되지 않는 이유는 무엇입니까?변수가 빈 문자열로 초기화됩니다.파라미터 확장이 발생하면,#연산자(셸 주석 문자에 추가됨)#유사성에 사용됨) 매개 변수 값에서 실제 주석을 제거하려고 시도합니다.물론 결과는 여전히 빈 문자열입니다.

따옴표로 묶이지 않은 매개 변수 확장은 단어 분할 및 경로 이름 생성을 거칩니다.이 경우 두 프로세스 모두 빈 문자열에서 추가 단어를 만들지 않으므로 결과는 여전히 빈 문자열입니다.이러한 빈 문자열은 표시되는 명령에 영향을 주지 않고 삭제됩니다.위의 내용은 정확히 다음과 같습니다.

who \
  -u

언급URL : https://stackoverflow.com/questions/9522631/how-to-put-a-line-comment-for-a-multi-line-command

반응형