![このコマンドが期待どおりに機能しないのはなぜですか? [閉鎖]](https://linux33.com/image/119201/%E3%81%93%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E6%9C%9F%E5%BE%85%E3%81%A9%E3%81%8A%E3%82%8A%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
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'