#bash #curl
Вопрос:
Я ищу, чтобы загрузить загрузку файла данных из нескольких частей/форм. Я работаю над заданием circleci, чтобы автоматически развернуть пару файлов определенного типа за один раз.
Это решение работает, но оно выполняет отдельный вызов curl для каждого файла.
cd ~/project;find . -name "*.txt*" -type f -exec curl -k -H "Accept: application/json" -H "Authorization: Bearer $bearertoken" -F "deployment-name=${CIRCLE_SHA1:0:7}" -F "deployment-source=circleci" -F "enable-duplicate-filtering=false" -F "deploy-changed-only=true" -F "{}=@{}" http:www.blah.com ;
Мне интересно, есть ли способ, которым я могу создать список файлов всех файлов в каталоге, а затем использовать эту переменную в одной загрузке curl.
Комментарии:
1. Это зависит от того, разрешает ли сценарий, который вы отправляете, несколько загрузок.
2. Да, он поддерживает несколько файлов в одном обновлении. Например, это будет работать так-F «./file1=@./file1.txt» -F «./file2=@./file2.txt
Ответ №1:
Используйте цикл для создания массива чередующихся -F
и filename=@filename
. Затем подставьте массив в команду curl.
files=()
while read -r filename; do
files =(-F "$filename=@$filename")
done < <(find . -name '*.txt' -type f)
curl -k -H "Accept: application/json" -H "Authorization: Bearer $bearertoken" "${$files[@]}" -F "deployment-name=${CIRCLE_SHA1:0:7}" -F "deployment-source=circleci" -F "enable-duplicate-filtering=false" -F "deploy-changed-only=true" "${$files[@]}" http:www.blah.com
Комментарии:
1. Наверняка есть лишний
$
в"${$files[@]}"
2. Это именно то, что я хотел сделать. Спасибо. внес некоторые небольшие изменения в мои сценарии.