Bash curl是否使用单个curl命令上载目录中的所有文件?

Bash curl是否使用单个curl命令上载目录中的所有文件?,bash,curl,Bash,Curl,我希望上传一个多部分/表单数据文件上传。我正在做一个circleci作业,一次就自动部署两个特定文件类型的文件 这个解决方案可以工作,但它对每个文件进行单独的curl调用 cd ~/project;find . -name "*.txt*" -type f -exec curl -k -H "Accept: application/json" -H "Authorization: Bearer $bearertoken" -F &quo

我希望上传一个多部分/表单数据文件上传。我正在做一个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上传中使用该变量。

使用循环创建交替的
-F
文件名=@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
files=()
而read-r文件名;做
文件+=(-F“$filename=@$filename”)

done<这取决于您发送到的脚本是否允许多次上载。是的,它支持一次更新中的多个文件。例如,它的工作原理如下-F“/file1=@./file1.txt”-F“/file2=@./file2.txt当然在
“${$files[@]}”
中有一个额外的
$
,这正是我想要做的。谢谢。对我的脚本做了一些小的修改。