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

与ssh一起使用时忽略sh命令的参数,ssh,sh,Ssh,Sh,在以下命令中,忽略sh commandecho-hey的第一个参数: $ssh localhost sh-c'echo-hey;回声何' 呵 为什么?您的命令行是: ssh localhost sh -c 'echo hey; echo ho' ssh在本地主机上启动shell并将其传递给comandline: sh -c echo hey; echo ho localhost上的shell可以看到两个命令。两者都运行良好 问题是第一个命令是:sh-c echo-hey 选项-c告诉sh执

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

$ssh localhost sh-c'echo-hey;回声何'
呵
为什么?

您的命令行是:

ssh localhost sh -c 'echo hey; echo ho'
ssh
在本地主机上启动shell并将其传递给comandline:

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执行。

您的命令行是:

ssh localhost sh -c 'echo hey; echo ho'
ssh
在本地主机上启动shell并将其传递给comandline:

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执行