Zsh 复杂命令替代形式的示例

Zsh 复杂命令替代形式的示例

您能提供一下见解吗复杂命令的替代形式

我在这个文档上花了很长时间,但它可以变得更清晰。

我正在寻找if, for, foreach, while, until, repeat, case,select和的清晰示例function

答案1

这些只是一些命令的较短形式,主要是去掉thenfidodone等“冗余”保留字。长格式更便于移植;短的仅适用于zsh.


例如长形式if

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

不仅可以在其他 shell 中工作zsh,还可以在其他 shell 中工作(用单括号替换双括号以获得更多的可移植性)

而短格式

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
    

相关内容