다중 행 bash 명령의 주석


26

이 단일 명령 BASH 스크립트 파일은 이해하기 어렵 기 때문에 각각의 작업에 대한 주석을 쓰고 싶습니다.

echo 'foo'     \
| sed 's/d/a/' \
| sed 's/e/b/' \
| sed 's/f/c/' \
> myfile

(sed는 단지 예일뿐입니다. 실제로는 greps와 tr 및 awks가 혼합되어 있습니다)

나는 라인을 복제해야하거나, 각 라인을 적용 할 라인에서 멀리 떨어져야하는 것을 싫어할 것이다.
그러나 동시에 BASH는 "인라인"코멘트를 허용하지 않는 것 같습니다.

이 문제를 해결할 수있는 우아한 방법이 있습니까?

답변:


44

그 다음에 주석이있는 줄 끝에 파이프를 넣으십시오.

$ echo 'foo' |
sed 's/f/a/' | # change first f to a
sed 's/o/b/' | # change first o to b
sed 's/o/c/'   # change second o to c
abc

13

이 질문에 대한 의견을 말하고자하는 동안 -pipeline multiline 명령 :

$ echo 'foo' |
sed -e 's/f/a/' `: # change first f to a` \
    -e 's/o/b/' `: # change first o to b` \
    -e 's/o/c/' `: # change second o to c`

당신이 논평을 자동화하는 것과 같이 정말로 비뚤어진 무엇인가하고 있지 않다면, 나는 파이프에 대한 Mikel의 대답보다 이것을 선호하는 이유를 볼 수 없지만, 정말로 원한다면 :

$ echo 'foo' |
sed 's/f/a/' | `: # change first f to a` \
sed 's/o/b/' | `: # change first o to b` \
sed 's/o/c/'   `: # change second o to c`

또는:

$ echo 'foo' |
sed 's/f/a/' `: # change first f to a` |
sed 's/o/b/' `: # change first o to b` |
sed 's/o/c/' `: # change second o to c`

출처: http://unix.derkeiler.com/Newsgroups/comp.unix.solaris/2005-07/0991.html


아주 좋습니다 - 이것을 지적 해 주셔서 감사합니다!
Brandon Rhodes

6

음, 나는이 방법을 선호한다.

echo 'foo' | {
  # change first f to a
  # you can add more lines of comment on the command options
  sed 's/f/a/'
} | {
  # change first o to b
  sed 's/o/b/'
} | {
  # change second o to c
  sed 's/o/c/' 
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.