与ssh一起使用时忽略sh命令的参数
在以下命令中,忽略sh command与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执
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执行