我有将多个文件合并为一个文件的工具:
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是在循环中定义的。
有什么建议吗?
答案 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