bash – 无法理解Fish shell中的命令替换
在sh:
~$`echo ls` bin/ Desktop/ 但在鱼类: fish: Illegal command name “(echo ls)” ~% (echo ls) (请注意,错误消息显示在命令行上方.) ~% echo (echo ls) ls ~% eval (echo ls) bin/ Desktop/ fish: Illegal command name “(echo ls)” exec (echo ls) ^ ~% exec (echo ls) 看来命令替换只能作为命令的参数,而不是命令本身?为什么? 好吧,帮助文档确实说
但是,为什么呢?
怎么样
这是因为命令替换属于参数扩展,不允许作为命令. 一个类似的例子: 在sh: tmpls=ls $tmpls 但在鱼类: % set cmd ls; $cmd fish: Variables may not be used as commands. ... 为什么 简而言之,它对可验证性有好处 这个article解释了细节:
出于同样的原因,命令替换不允许作为命令. (注意:引用的例子不公平,因为’if’和’fi’不是简单的命令而是保留字.请参阅下面的评论.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |