I suddenly realized I don't know how to execute things over SSH.
I tried to do
$ ssh user@server sh -c 'echo "hello"'
but it outputs nothing, or rather, it outputs an empty line. If the command given to
ssh is run through
$SHELL -c on the remote host, then I can see why that is (or I can try to rationalize it to myself anyway).
Ok, second try:
$ ssh user@server 'echo "hello"' hello
All well and good.
Now for what I was really hoping would work:
$ ssh user@server 'echo "hello $1"' sh "world" hello sh world
Hmm... where does the
sh come from? This is indicating that
$1 is empty and that what really gets executed on the other side is something like
$SHELL -c 'echo "hello sh world"'
and not what I had hoped,
$SHELL -c 'echo "hello $1"' sh "world"
Is there a way to safely pass arguments to the script executed via
ssh, in a sane and sensible way that is analogous to running
sh -c 'script text' sh "my arg1" "my arg2" "my arg3" ...
but on the remote host?
My login shell, both locally and remotely is
Safely = Preserving whitespace etc. in arguments.
Sanely = No crazy escaping of quotes.