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