bash - 迭代变量路径中的文件(Bash)
问题描述
我正在寻找在变量路径中迭代文件的最佳方法,并遇到了这个问题。
但是,这个和我发现的所有其他解决方案都使用文字路径而不是变量,我相信这是我的问题。
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
推荐阅读
- python - Anaconda 无法安装
- laravel - 从现有数据库自动生成视图和控制器
- javascript - 如何在多个对象上实现 isPointInPath MouseEvent
- go - 使用 gRPC 状态包中的 WithDetails() 传递自定义原型消息
- android - 找不到资源 xml/opener_paths(又名 io.ionic.starter:xml/opener_paths)
- c++ - 使用 STL 在 C++ 中计算沿某个轴的多维向量的均值和标准差
- node.js - 如何更改 node.js 中 process.env.PORT 的值?(解决了)
- angular - 构造函数:类型 'void' 不可分配给类型 'any[]'
- android - 使用长短名称在 Android 中搜索应用
- python - 在 Python 中重现 MATLAB 的 imgaborfilt