cat $(echo this\\ list)
看起来应该是一样的
cat this\ list
但事实并非如此。
我知道我可以使用
cat "$(echo this\\ list)"
但我无法将多个文件回显到 cat 中。
为什么第一个命令不起作用?
答案1
可以通过以下方式查看发生的情况set -x
:
:> set -x
:> cat $(echo this\\ list)
++ echo 'this\' list
+ cat 'this\' list
:> cat this\ list
+ cat 'this list'
区别在于,'this\' list
有两个参数,即cat
尝试读取一个文件this\
和另一个文件list
,但'this list'
只是一个参数,即不同的文件名。
你需要:
:> cat "$(echo this\ list)"
++ echo 'this list'
+ cat 'this list'