多个文件,名称中的空格作为bash中的单个参数

时间:2013-05-13 13:24:52

标签: bash shell

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

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是在循环中定义的。

有什么建议吗?

2 个答案:

答案 0 :(得分:7)

您应该使用array来保留包含空格的参数,例如:

totool=( "test file1.gam" "test file2.gam" "test fileN.gam" )
tool "${totool[@]}" outfile.wrl

答案 1 :(得分:1)

使用数组肯定是合理的。您的引用尝试可以使用eval解决,并且单引号(在双引号内转义也可以,但使用单引号更清晰):

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