zsh`else`保留关键字命令可以别名,并且lexem本身可以重新用作`fi`关键字命令吗?

时间:2017-12-28 11:06:11

标签: zsh-alias

关注ZSH: Call in-built function from zsh function that uses the same nameRun a command that is shadowed by an alias,可能需要keyword等同于builtincommand的命令if [ -z 'love' ]; then echo 'sad world'; keyword else echo 'wonderful world'; fi 为其各自的同名令牌类别;这样

if [ -z 'love' ]; then echo 'sad world'; else echo 'wonderful world'; fi

等同于

else

在以下棘手的场景中发现了此问题:能够将alie替换为fi,将else替换为keyword。有关详细信息,请参阅Can zsh buildtins be aliased?

如果存在if [ -z 'love' ]; then echo 'sad world'; alie echo 'wonderful world'; else 命令,那么假设尝试实现该命令将是:

alias alie =“keyword else”   别名='fi'

所以,总而言之,问题是你如何使zsh代码的以下和平工作符合上一个命令的预期:

for i in *.jar; do mv $i `echo ${i%} | tr [:upper:] [:lower:]`; done;  

1 个答案:

答案 0 :(得分:0)

这还不是一个有效的解决方案,但这是一个想法:使用-renable内置命令的disable标记来更改else关键字的可见性。所以:

alias se='enable -r else; if'
alias alie='else'
disable -r else
alias else="fi; disable -r else"

遗憾的是,这不起作用

se [ -z 'amo' ]; then echo 'trista mondo'; alie echo 'mirinda mondo'; else
# zsh: parse error near `fi'

然而,这确实是在“其他”替代品上有所破坏,因为非内联版本确实会进入else-branch并打印“mirinda mondo”。