Construindo strings de comando usando variáveis ​​com vários níveis de citação e espaços

Eu tenho um script que rodacurl. Eu quero ser capaz de adicionar um-H parâmetro, se uma string não estiver vazia. O que é complexo são os níveis de cotação e espaços.

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

A ideia é que a variável CAPT esteja vazia ou contenha o cabeçalho -H desejado da mesma forma que os outros, por exemplo,-H "X-Caption: Test Caption"

O problema é quando executado, ele interpreta a atribuição como um comando a ser executado:

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

Eu tentei redefinir o IFS antes do código, mas isso não fez diferença.

questionAnswers(3)

yourAnswerToTheQuestion