我在迭代包含文件模式列表的环境变量时遇到了问题。
实施例: " FILEPATTERN = * .xml * .log"
代码:
local log_file_pattern=(${FILEPATTERN})
for (( i=0; i < ${#log_file_pattern}; i++ ))
do
pattern="${log_file_pattern[$i]}"
... some more code ...
done
我总是得到:
如何停止循环解释* .log?
答案 0 :(得分:1)
我相信FILEPATTERN
设置为*.xml *.log
问题出在这一行:
local log_file_pattern=(${FILEPATTERN})
由于您没有在${FILEPATTERN}
周围使用双引号,因此shell globbing有效。似乎您的目录中没有与*.xml
匹配的文件,而*.log
确实扩展为某些文件名。这就是为什么您的数组元素0设置为*.xml
而元素1设置为anaconda-post.log
的原因。
您可以使用read
命令加载数组来解决问题:
local log_file_pattern
read -r -a log_file_pattern <<< "$FILEPATTERN"
将*.xml
加载到元素0和*.log
加载到数组的元素1,而不进行通配。