명령 중간에 설명을 추가할 수 있나요? [복사]

명령 중간에 설명을 추가할 수 있나요? [복사]

여러 변수를 내보내고 싶기 때문에 아무 이유 없이 여러 번 호출 export하지 않도록 하나의 명령 에 넣기로 결정했습니다. 그러면 (논리적으로) 속도가 느려질 것입니다(맞죠?)export

이와 같이:

export\
       var1=a\
       var2=b\
       var3=c
       
       [ ... ]

       varn=zzz

하지만 이로 인해 더 이상 둘 사이에 주석을 추가할 수 없습니다.

export\
       # Comment
       var1=a\
       var2=b # Comment \
       var3=c\
       
       [ ... ]

       varn=zzz

백슬래시는 모든 것을 같은 줄에 넣기 때문입니다.

내보낼 변수에 어떻게 주석을 달 수 있나요? 각 변수를 호출하면 될 것 같지만 export주석 때문에 스크립트 속도가 느려지고 싶지는 않습니다.

반복 메시지 편집: 다른 질문에 대한 답변도 내 문제를 해결했지만 여기에 있는 답변과 의견도 어느 정도 가치가 있다고 생각합니다.

답변1

네, 그렇죠. 거의 모든 위치에 명령 대체를 배치할 수 있으며 명령 대체 내에 주석을 배치할 수 있습니다. 추악하지만 효과적입니다.

export\
       $(# Comment
       ) \
       var1=a\
       var2=b $(# Comment 
       ) \
       var3=c

하지만 정말로 다른 방법으로 할 수 없다면 그렇게 하세요. 거의 모든 경우에 당신은할 수 있다이렇게 하면 명령을 여러 부분으로 나누고 필요한 경우 각 부분에 설명을 추가하면 더 쉽게 읽을 수 있습니다. 합리적인 변수 이름을 선택하면 일부 주석이 필요하지 않을 수도 있습니다.

이것은 확실히 성과를 위해 하는 일이 아닙니다. 외부 명령을 호출하는 것은 약간 비용이 많이 들지만 내장 명령을 호출하는 것은 그렇지 않습니다. 명령을 분할해도 export실행에 차이가 없을 것 같습니다 .zshrc. (아래에서 벤치마킹했는데 이 줄을 벤치마킹하면 실제로 영향이 있지만 일반적인 규모에서는 .zshrc완전히 무시할 수 있습니다.) 어쨌든 내장을 호출하는 것은 명령 대체보다 저렴하므로 $(…)위의 내용으로 인해 스크립트 속도가 느려집니다.


export각 변수를 한 번 호출하는 것보다 각 변수를 호출 하는 것이 더 느립니까? 조금입니다. 적어도 내가 테스트한 특정 코드, 버전, 플랫폼의 경우 차이는 차이를 만들 수 있을 만큼 작습니다.

% time zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo var2=bar; }' 1 1000000
zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo var2=bar; }' 1 1000000  1.36s user 0.24s system 99% cpu 1.612 total
% time zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo; export var2=bar; }' 2 1000000                            
zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo; export var2=bar; }' 2   1.67s user 0.43s system 99% cpu 2.097 total

그러나 명령 대체를 추가하면 속도가 100배 느려집니다! (반복 횟수 감소에 유의하세요.)

% time zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo var2=bar $(); }' 3 10000
zsh -c 'for ((i=0; i<$1; i++)) { export var1=foo var2=bar $(); }' 3 10000  1.33s user 1.00s system 107% cpu 2.165 total

관련 정보