You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何ssh 127.0.0.1 bash -c "echo abc"命令输出空行而非abc?

为什么ssh 127.0.0.1 bash -c "echo abc"输出空行?

核心问题出在本地shell的引号解析顺序:

  • 当你在本地终端执行这条命令时,本地shell会先处理外层的双引号,把"echo abc"解析成不带引号的echo abc。所以实际通过ssh传给远程主机的命令是:bash -c echo abc。
  • 远程主机上的bash接收到bash -c echo abc后,会把-c后面的第一个参数(也就是echo)当作要执行的命令字符串,剩下的abc会变成bash的位置参数($1),但echo命令本身没有调用这个参数。最终远程bash只执行了不带参数的echo,自然就输出空行。

如果要让命令正常输出abc,你需要让本地shell不要解析内层的引号,有两种常用方式:

  • 用单引号包裹整个远程命令:ssh 127.0.0.1 'bash -c "echo abc"'
  • 转义双引号:ssh 127.0.0.1 bash -c \"echo abc\"

内容的提问来源于stack exchange,提问作者Kos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 14:40:28