I have a script, which is essentially a wrapper around an executable by the same name on a different machine. For the sake of example, i’ll wrap printf here. My current script looks like this:
#!/bin/bash
ssh user@hostname.tld. printf "$@"
Unfortunately, this breaks when one of the arguments contains a space, e.g. i’d expect the following commands to give identical outputs.:
~$ ./wrap_printf "%s_%s" "hello world" "1"
hello_world1_
~$ printf "%s_%s" "hello world" "1"
hello world_1
The problem gets even worse when (escaped) newlines are involved. How would I properly escape my arguments here?
This works for spaces. It doesn’t work if the argument has an embedded single quote.