首页 > 解决方案 > 迭代变量路径中的文件(Bash)

问题描述

我正在寻找在变量路径中迭代文件的最佳方法,并遇到了这个问题。

但是,这个和我发现的所有其他解决方案都使用文字路径而不是变量,我相信这是我的问题。

for file in "${path}/*"
do
     echo "INFO - Checking $file"
     [[ -e "$file" ]] || continue
done

即使目录中肯定有文件(如果我将文字路径之一代替${path}我得到预期的结果),这总是只迭代一次,并且 $file 的值始终是${path}/*没有任何通配符的文字值.

我究竟做错了什么?

标签: bashshellglob

解决方案


全局扩展不会发生在 shell 的引号(单引号和双引号)内。

您应该使用以下代码:

for file in "$path"/*; do
     echo "INFO - Checking $file"
     [[ -e $file ]] || continue
done

推荐阅读