Используйте \0 в качестве разделителя и считайте имена файлов в текущий процесс от порожденной команды, как так:
foo() {
printf "Hello {%s}\n" "$1"
}
while read -d '' filename; do
foo "${filename}" </dev/null
done < <(find . -maxdepth 2 -type f -print0)
Что продолжается здесь:
read -d ''
чтения до следующих \0 байтов, таким образом, Вы не должны волноваться о странных символах в именах файлов.-print0
использование \0 для завершения каждого сгенерированного имени файла вместо \n.cmd2 < <(cmd1)
совпадает с cmd1 | cmd2
за исключением того, что cmd2 выполняется в основной оболочке и не подоболочке./dev/null
гарантировать его случайно не читает из канала.$filename
заключается в кавычки так, оболочка не пытается разделить имя файла, которое содержит пробел.Теперь, read -d
и <(...)
находятся в zsh, ударе и ksh 93u, но я не уверен в ранее ksh версии.
Я думаю, что Ваша проблема находится в этой части URL:
?offset=100000filetypes[]=txt
Это - строка запроса с двумя полями в нем (offset
и filetypes[]
).
Полевые пары значения имени в строке запроса должны быть разделены амперсандом. Попробуйте его этот путь:
?offset=100000&filetypes[]=txt
Без &
разделяя поля, Вы говорите серверу о желании смещения "100000filetypes [] =txt". Сервер затем отклоняет это как недействительный аргумент и дает Вам значение по умолчанию 0 вместо этого.