为什么Cat会在命令replace时引用单词

所有,

我试图使用命令replace来保持文件中的命令行参数。 我最初的想法是简单地将命令行参数放在一个文件中的单行,然后调用我的命令作为command $( cat [arguments-file] ) other arguments然而,这似乎并没有正确的工作。

我开始做一些debugging,通过set -x打开bashdebugging,命令的结果是

 command $( /tmp/arg-file ) File.xml + command -m '"Manhattan' Item 'MockService"' -P 'Hellp=Value' File.xml 

我的参数文件的内容是

 -m "Manhattan Item MockService" -P Hellp=Value 

有没有人能够解释为什么在命令replace期间添加单引号?

他们不是。 单引号只能通过set -x ,以便将这些单词消除歧义给读者。 但是,像这样存储命令参数最多是有问题的。 考虑每行存储一个参数,并使用read和一个数组来生成命令行。