To make my code portable, I try to use printf rather than echo. But then
printf "-dogs-cats"
returns an error. A workaround in the present case is:
printf "-";printf "dogs-cats"
But is there a general, portable command (or an option with printf) that will print an arbitrary string as a literal/verbatim, not try to interpret the string as a format?
I work in BSD Unix (on a Mac), but my objective is code that would work in other Unix flavors as well.
Just use
--afterprintfto let it know that no more arguments are to come and to consider the string as so:This is a *NIX-trick that can be used for many other commands. As Bash Reference Manual → 4 Shell Builtin Commands says:
Note why this happens:
This makes
printfunderstand the first part of the string,-d, as an argument.