迭代可变路径中的文件 (Bash)
Iterate Over Files in Variable Path (Bash)
我正在寻找在变量路径中查找迭代文件的最佳方法,并遇到了 this 问题。
但是,这个和我找到的所有其他解决方案都使用文字路径而不是变量,我相信这是我的问题。
for file in "${path}/*"
do
echo "INFO - Checking $file"
[[ -e "$file" ]] || continue
done
即使目录中肯定有文件(如果我将文字路径之一放在 ${path}
的位置我会得到预期的结果),这总是只迭代一次,并且 $ 的值file 始终是 ${path}/*
的字面值,没有任何通配符。
我做错了什么?
shell.
中的引号(单引号和双引号)内不会发生全局扩展
您应该使用此代码:
for file in "$path"/*; do
echo "INFO - Checking $file"
[[ -e $file ]] || continue
done
我正在寻找在变量路径中查找迭代文件的最佳方法,并遇到了 this 问题。
但是,这个和我找到的所有其他解决方案都使用文字路径而不是变量,我相信这是我的问题。
for file in "${path}/*"
do
echo "INFO - Checking $file"
[[ -e "$file" ]] || continue
done
即使目录中肯定有文件(如果我将文字路径之一放在 ${path}
的位置我会得到预期的结果),这总是只迭代一次,并且 $ 的值file 始终是 ${path}/*
的字面值,没有任何通配符。
我做错了什么?
shell.
中的引号(单引号和双引号)内不会发生全局扩展您应该使用此代码:
for file in "$path"/*; do
echo "INFO - Checking $file"
[[ -e $file ]] || continue
done