如何将文件名作为变量传递给可执行程序?

如何将文件名作为变量传递给可执行程序?

这应该是一个比较简单的问题。我试图在循环中通过可执行程序传递多个文件。我尝试了多种策略(存储在数组中等),但文件名似乎没有被识别为变量。我收到的错误是:没有这样的文件或目录。

我最近尝试的概述:

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

相关内容