Как передать имена файлов в качестве переменных в исполняемую программу?

Как передать имена файлов в качестве переменных в исполняемую программу?

Это должен быть относительно простой вопрос. Я пытаюсь передать несколько файлов через исполняемую программу в цикле. Я пробовал несколько стратегий (сохранение в массиве и т. д.), но имя файла, похоже, не распознается как переменная. Я получаю ошибку: Нет такого файла или каталога.

Краткое содержание моей последней попытки:

FILES=path/*/*

for f in $FILES
do
./function -input $f 
done

Я работаю в оболочке bash.

решение1

Вместо использования простой переменной для хранения последовательности расширения подстановки рекомендуется использовать правильный массив и включить опцию подстановки оболочки 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

Связанный контент