Construyendo cadenas de comando usando variables con varios niveles de comillas y espacios

Tengo un script que correcurl. Quiero ser capaz de agregar opcionalmente un-H parámetro, si una cadena no está vacía. Lo complejo son los niveles de cotización y espacios.

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

La idea es que la variable CAPT esté vacía o contenga el encabezado -H deseado en la misma forma que los demás, por ejemplo,-H "X-Caption: Test Caption"

El problema es que cuando se ejecuta, interpreta la asignación como un comando a ejecutar:

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

He intentado reiniciar IFS antes del código, pero no hizo una diferencia.

Respuestas a la pregunta(3)

Su respuesta a la pregunta