Zsh의 복잡한 명령의 대체 형태의 예

Zsh의 복잡한 명령의 대체 형태의 예

통찰력을 제공해 주실 수 있나요?복잡한 명령의 대체 형태?

이 문서를 작성하는 데 오랜 시간을 보냈지만 더 명확하게 만들 수 있습니다.

if, for, foreach, while, until, repeat, caseselect의 명확한 예를 찾고 있습니다 function.

답변1

이는 일부 명령의 짧은 형식일 뿐이며 주로 then, fi, 등과 같은 "중복" 예약어를 do제거 합니다. done긴 형식은 이식성이 더 좋으며 짧은 형식은 zsh.


예를 들어 긴 형식if

if [[ -f file ]] ; then echo "file exists"; else echo "file does not exist"; fi

다른 쉘에서만 작동하는 것이 아니라 zsh다른 쉘에서도 작동합니다(더 많은 이식성을 위해 이중 대괄호를 단일 대괄호로 교체).

짧은 형식

if [[ -f file ]] { echo "file exists" } else { echo "file does not exist" }
if [[ -f file ]] echo file exists

에만 적용됩니다 zsh.


또 다른 예는 이번에는 for루프입니다.

긴 형식:

for char in a b c; do echo $char; done
for (( x=0; x<3; x++ )) do echo $x; done

짧은:

for char in a b c; echo $char
for char (a b c) echo $char             # second version of the same
foreach char (a b c); echo $char; end   # csh-like 'for' loop
for (( x=0; x<3; x++ )) echo $x         # c++ version
for (( x=0; x<3; x++ )) { echo "$x"; }  # also works in bash and ksh

여러분도 이해하실 거라 확신합니다. 불필요한 단어를 제거하고 목록을 다른 콘텐츠와 분리해야 하는 경우 대괄호를 사용하세요 {}. 나머지 명령:

  • 하지만

    x=0; while ((x<3)); do echo $((x++)); done    # long
    x=0; while ((x<3)) { echo $((x++)) }          # short
    x=0; while ((x<3)) echo $((x++))              # shorter for single command
    
  • ~까지

    x=0; until ((x>3)); do echo $((x++)); done    # long
    x=0; until ((x>3)) { echo $((x++)) }          # short
    x=0; until ((x>3)) echo $((x++))              # shorter for single command
    
  • 반복하다

    repeat 3; do echo abc; done                   # long
    repeat 3 echo abc                             # short
    
  • 사례

    word=xyz; case $word in abc) echo v1;; xyz) echo v2;; esac   # long
    word=xyz; case $word { abc) echo v1;; xyz) echo v2 }         # short
    
  • 선택하다

    select var in a b c; do echo $var; done       # long
    select var in a b c; echo $var                # short
    select var (a b c) echo $var                  # shorter
    
  • 기능

    function myfun1 { echo abc; }            # long
    function myfun2; echo abc                # short
    myfun3() echo abc                        # shorter and Bourne-compatible
    

관련 정보