Verwenden Sie Parameter in einem Bash-Skript, das curl verwendet

382
Timmy

Ich erstelle ein Skript, das eine Curl-Anforderung an eine vordefinierte Site ausführt. Leider findet das Skript die 3 Parameter, aber die Curl funktioniert nicht richtig.

Wo ist das Problem? Hier ist mein Versuch.

random="$(cat something.txt)" echo "ID: $ - File: $1 - Var: $2 - Cookie: $3" url="$(curl -i -L -X POST --cookie 'info=$3' \ -F 'var=$2' \ -F 'submit=Send' \ -F 'file[]=@$1' \ https://example.com/upload?id=$)" 

Die zweite Zeile mit echoden korrekten Werten und der gleichen POST-Anforderung bereitet kein Problem, wenn die Parameter direkt verwendet werden. Der curlFehler schlägt jedoch fehl und es werden folgende Fehler angezeigt:

Warning: setting file /my/path/to.file  Warning: failed! 
3

1 Antwort auf die Frage

2
DavidPostill

Wo ist das Problem?

Sie müssen doppelte Anführungszeichen verwenden.

Shellcheck analysiert Ihr Skript und sucht nach Fehlern:

$ shellcheck myscript  Line 1: random="$(cat something.txt)" ^-- SC2148: Tips depend on target shell and yours is unknown. Add a shebang.  Line 3: url="$(curl -i -L -X POST --cookie 'info=$3' \ ^-- SC2034: url appears unused. Verify use (or export if used externally). ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.  Line 4: -F 'var=$2' \ ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.  Line 6: -F 'file[]=@$1' \ ^-- SC2016: Expressions don't expand in single quotes, use double quotes for that.  Line 7: https://example.com/upload?id=$)" ^-- SC2086: Double quote to prevent globbing and word splitting.  $  
Vielen Dank für den Vorschlag, leider verstehe ich nicht, wie der Dateiparameter `\" file [] = @ $ 1 \ "zitiert wird.` `Funktioniert nicht Timmy vor 5 Jahren 0
@Timmy Warum entkommst du den `` s? DavidPostill vor 5 Jahren 1
Weil die Zeichenfolge mit `url =" $ ... `beginnt Timmy vor 5 Jahren 0
Übrigens habe ich versucht, die flüchtenden Charaktere zu entfernen, jetzt funktioniert es wie ein Zauber, danke! Ich muss mehr die Zitatauflösung in bash studieren :) Timmy vor 5 Jahren 0
@Timmy . Ich weiß nicht, wie ich das reparieren kann. DavidPostill vor 5 Jahren 0