有没有更好的方法在鱼壳中进行命令替换?
在bash我可以这样做:
~> echo $(whoami) => user
~> echo "I am: $(whoami)" = > I am: user
Run Code Online (Sandbox Code Playgroud)
但在鱼类看起来像我必须做的:
~> echo (whoami) => user
~> echo "I am: (whoami)" => "I am: (whoami)"
~> set who (whoami); echo "I am: $who" => I am: user
Run Code Online (Sandbox Code Playgroud)
这是在fish中进行命令替换的推荐方法,其中替换需要在带引号的字符串中发生吗?
在sh:
~$ `echo ls`
bin/ Desktop/
Run Code Online (Sandbox Code Playgroud)
但在鱼类:
fish: Illegal command name “(echo ls)”
~% (echo ls)
Run Code Online (Sandbox Code Playgroud)
(请注意,错误消息显示在命令行上方.)
~% echo (echo ls)
ls
~% eval (echo ls)
bin/ Desktop/
fish: Illegal command name “(echo ls)”
exec (echo ls)
^
~% exec (echo ls)
Run Code Online (Sandbox Code Playgroud)
看来命令替换只能作为命令的参数,而不是命令本身?为什么?
好吧,帮助文档确实说
如果参数包含一组括号,则括号括起的文本将被解释为命令列表.
但是,为什么呢?