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'
違いは、2つのパラメータ(1つのファイルと別のファイルを読み取ろうとすること)が'this\' list
ありますが、1つのパラメータ(別のファイル名など)があることです。cat
this\
list
'this list'
以下を行う必要があります。
:> cat "$(echo this\ list)"
++ echo 'this list'
+ cat 'this list'