2017-09-15 1 views
1

Beim Schreiben eines Skripts, das wget aufruft, möchte ich eine Variable verwenden, die alle Header enthält, aber wenn ich Folgendes versuche, dann die Leerzeichen in den Header-Strings bricht sie in mehrere Parameter (kein einziger Header):Verwenden Sie Bash-String, um mehrere Argumente zu einem Programm, wo einige Argumente gehören Whitespace

HEADERS='--header "Accept-Encoding: gzip, deflate"' 
wget $HEADERS "$URL" 
# ... $HEADERS is interpreted as 4 strings instead of 2 ... 
wget --header Accept-Encoding: gzip, deflate http://example.com 

ich nicht $HEADERS in Anführungszeichen wickeln kann, weil ich es brauche als 2 Argumente interpretiert werden statt 1 (Und Wenn ich viele Header in der Variablen hätte, müsste ich sie in noch mehr Argumente aufteilen.)

Ich schreibe oft Bash-Skripte, die Argumente für andere Programme zusammenstellen, und ich stoße oft auf dieses Problem. Gibt es eine Lösung in bash?

Antwort

1

Keine reguläre Variable verwenden; Verwende ein Array.

headers=(--header "Accept-Encoding: gzip, deflate") 
wget "${headers[@]}" "$URL" 
Verwandte Themen