我在《 Z-Shell用户指南》中阅读了以下内容:
'true'的同义词是':';它通常以这种形式用于提供具有副作用但不应该使用的参数-类似于
: ${param:=value}
这是所有Bourne Shell衍生物中的常见习语。在参数扩展中,
$param
如果之前为空,则为其赋值,否则保留该值。由于那是参数扩展的唯一原因,因此您:
可以忽略该参数。实际上,shell巧妙地构建了命令行-冒号,然后跟随$param
is 的值(无论赋值是否发生),然后执行命令;碰巧':'并没有注意到它给出的参数。
但我不明白。我的:
意思是true
,但是表达式中有两个冒号。作为一个小问题,为什么这个习语在所有的Bourne Shell衍生物中都使用了这么多?它有什么作用?
注意: 我对该成语在bash和zsh中的作用感兴趣。
谢谢
zsh
还是bash
?