I am trying to make a variable containing spaces which is MSG. Then add to that variable the argument csv. The "echo" above prints the write stuff. But when I try to use it in the last command its no longer valid and says Source file could not be loaded.
What am I missing? much searching hinted to arrays and using $ but I could not get that to work.
Using arrays to build the command is useful because the arguments are absolutely defined in each element of the array - i.e. the arguments to the exec call are correctly built.
I think the simplest way of doing what you want on a command line is to use two separate variables:
MSG1="file 2" MSG2="csv" /opt/libreoffice5.4/program/soffice.bin --headless --convert-to $MSG2 "$MSG1"
P.