关注ZSH: Call in-built function from zsh function that uses the same name和Run a command that is shadowed by an alias,可能需要keyword
等同于builtin
和command
的命令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;
答案 0 :(得分:0)
这还不是一个有效的解决方案,但这是一个想法:使用-r
和enable
内置命令的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”。