3

我有将多个文件合并为一个的工具:

totool=""test file1.gam" "test file2.gam" "test fileN.gam""
tool $totool outfile.wrl

问题是工具将空格识别为文件分隔符,“test file1.gam”将被视为两个文件。当我尝试做双引号变量参数时:

tool "$totool" outfile.wrl

程序尝试打开单个文件“test file1.gam test file2.gam test fileN.gam”而不是多个文件。

我尝试在每个文件名周围转义双引号:

totool=""\"test file1.gam\"" "\"test file2.gam\"" "\"test fileN.gam\"""

但程序将转义的双引号识别为文件名的一部分:无法打开文件 '"test file1.gam" "test file2.gam" "test fileN.gam"' 进行读取

.gam 文件的数量是可变的,并且 $totool 在循环中定义。

有什么建议么?

4

2 回答 2

7

您应该使用数组来保留包含空格的参数,如下所示:

totool=( "test file1.gam" "test file2.gam" "test fileN.gam" )
tool "${totool[@]}" outfile.wrl
于 2013-05-13T13:27:48.930 回答
1

使用数组当然是合理的。您可以使用单引号来解决您的引用尝试eval(在双引号内转义也可以,但使用单引号更简洁):

totool='"test file1.gam" "test file2.gam" "test fileN.gam"'
eval tool $totool outfile.wrl
于 2013-05-13T14:25:50.507 回答