Erstellen von Befehlszeichenfolgen unter Verwendung von Variablen mit verschiedenen Anführungszeichen und Leerzeichen

Ich habe ein Skript, das ausgeführt wirdcurl. Ich möchte optional eine hinzufügen können-H Parameter, wenn ein String nicht leer ist. Was komplex ist, sind die Ebenen des Zitierens und der Leerzeichen.

caption="Test Caption"

if [ "${caption}" != "" ]; then 
    CAPT=-H "X-Caption: ${caption}"
fi

curl -A "$UA" -H "Content-MD5: $MD5" -H "X-SessionID: $SID" -H "X-Version: 1"  $CAPT http://upload.example.com/$FN

Die Idee ist, dass die CAPT-Variable entweder leer ist oder den gewünschten -H-Header in derselben Form wie die anderen enthält, z.-H "X-Caption: Test Caption"

Das Problem ist, dass beim Ausführen die Zuweisung als auszuführender Befehl interpretiert wird:

$bash -x -v test.sh
+ '[' 'Test caption' '!=' '' ']'
+ CAPT=-H
+ 'X-Caption: Test caption'
./test.sh: line 273: X-Caption: Test caption: command not found

Ich habe versucht, IFS vor dem Code zurückzusetzen, aber es hat keinen Unterschied gemacht.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage