Jerry Geis wrote:
Hi All,
I am trying to build a command line with spaces in the argument. This demonstrates what I am trying to do. Clearly the first two commands work fine. However, the last 4 lines to not.
/opt/libreoffice5.4/program/soffice.bin --headless --convert-to csv "/tmp/file.xlsx" /opt/libreoffice5.4/program/soffice.bin --headless --convert-to csv "/tmp/file 2.xlsx"
MSG="file 2" MSG="csv "$MSG"" echo $MSG /opt/libreoffice5.4/program/soffice.bin --headless --convert-to $MSG
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.
<snip> I think the second MSG= effectively overwrites the first assignment. Why not use FIL="file 2";MSG="csv $FIL"? Note, also, you don't need quotes or backslash escapes - as long as you use quotes, not apostrophes, it will be interpreted.
mark