为什么这个命令不像我预期的那样工作?

为什么这个命令不像我预期的那样工作?
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'

相关内容