2017-07-17 8 views
2

Ich habe dieses Bash-Skript-Code:Erstellen einer Schleife mit curl -F Argument

#!/bin/bash 
FILES=/home/user/Downloads/asd/ 
for f in $FILES 
do 
curl -F dir="@/home/user/Downloads/asd;$f" -F Match=3 -F "Name=DrKla" \ 
-F countNo=1 -F outputFormat=json "http://somelink.com" 
done 

Im Inneren des asd Ordner gibt es 6 Dateien und ich möchte, dass sie 1 mit diesem Code von 1 hochgeladen werden als Argument -F "[email protected]"

Wenn ich meinen Code ausführen bekomme ich den Fehler:

Warning: skip unknown form field: /home/user/Downloads/asd/

curl: (43) A libcurl function was given a bad argument

Hier ist eine Arbeitsversion des Codes für eine einzelne Datei:

curl -F dir="@/home/user/Downloads/asd/count.txt" -F Match=3 -F "Name=DrKla" \ 
-F countNo=1 -F outputFormat=json "http://somelink.com" 

Also ich möchte alle Dateien in asd Ordner gelesen und so hochgeladen werden. Ich sehe nicht, was mit meiner Do-Schleife falsch ist.

Antwort

1

Die Probleme scheinen zu sein, dass Sie nur einen Weg geben, keinen Verweis auf alle Dateien im Pfad * und es ist eine seltsame Semikolon ; in Ihrem Pfad:

#!/bin/bash 
FILES=/home/user/Downloads/asd/* 
for f in $FILES 
do 
    curl -F dir="@$f" -F Match=3 -F "Name=DrKla" \ 
     -F countNo=1 -F outputFormat=json "http://somelink.com" 
done 

Ich bin nicht sicher, was die @ ist oder wenn es benötigt wird, aber $f sollte bereits den Pfad enthalten.

+0

Hallo, vielen Dank mit diesem genauen Code funktioniert es. Ich weiß ehrlich gesagt nicht, warum das @ da ist, aber es ist ein Muss, es scheint mir, wenn ich es lösche Code funktioniert nicht. Aber diese Version von dem, was du gabst, wirkt wie ein Zauber. Vielen Dank –