在以下命令中,将忽略 sh 命令echo hey
的第一个参数:
$ ssh localhost sh -c 'echo hey; echo ho'
ho
为什么?
答案 0 :(得分:2)
您的命令行为:
ssh localhost sh -c 'echo hey; echo ho'
ssh
在localhost上启动一个shell,并将其传递给命令行:
sh -c echo hey; echo ho
localhost上的shell看到两个命令。两者都运行良好。
问题在于,第一个命令是:sh -c echo hey
选项-c
告诉sh
执行下一个参数。下一个参数是echo
。无关的hey
参数将被忽略。
要解决您的问题,请更改报价或不运行冗余shell:
ssh localhost "sh -c 'echo hey; echo ho'"
ssh localhost 'echo hey; echo ho'
主要的混乱之处可能是ssh
将接收到的所有非选项参数连接成一个字符串,并传递给远程Shell来执行。