통찰력을 제공해 주실 수 있나요?복잡한 명령의 대체 형태?
이 문서를 작성하는 데 오랜 시간을 보냈지만 더 명확하게 만들 수 있습니다.
if
, for
, foreach
, while
, until
, repeat
, case
및 select
의 명확한 예를 찾고 있습니다 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