与ssh一起使用时,将忽略sh命令的参数

时间:2019-10-28 21:11:00

标签: ssh sh

在以下命令中,将忽略 sh 命令echo hey的第一个参数:

$ ssh localhost sh -c 'echo hey; echo ho'

ho

为什么?

1 个答案:

答案 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来执行。

相关问题