这应该是一个比较简单的问题。我试图在循环中通过可执行程序传递多个文件。我尝试了多种策略(存储在数组中等),但文件名似乎没有被识别为变量。我收到的错误是:没有这样的文件或目录。
我最近尝试的概述:
FILES=path/*/*
for f in $FILES
do
./function -input $f
done
我正在 bash shell 中工作。
答案1
建议使用适当的数组并启用 shell 通配选项globstar
来填充所有子目录中的文件,而不是使用普通变量来存储通配符扩展序列
shopt -s globstar nullglob
file_list=(path/**/*)
并使用数组循环来处理每个文件
for file in "${file_list[@]}"; do
printf '%s\n' "$file"
# Your other actions on file goes here
done