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

如何让SSH远程命令中的子命令在远端执行而非本地?

让SSH命令中的子命令在远程执行的解决方法

你的问题出在本地shell会优先解析双引号内的命令替换语法$(...),导致这部分逻辑在本地执行后才把结果传给远程机器。要让$(ls -la /folder | wc -l)在远程执行,有两种简单可行的方式:

  • 方法一:转义特殊字符
    把命令里的$和括号前加上反斜杠\,阻止本地shell解析这部分内容,让它原封不动传到远程:

    ssh user@host "if [ \$(ls -la /folder | wc -l) -eq 83 ]; then true; else false; fi;"
    
  • 方法二:改用单引号包裹远程命令
    单引号在本地shell中会完全保留内部内容的原样,不会解析变量或命令替换,直接将完整命令发送给远程执行,写法更简洁:

    ssh user@host 'if [ $(ls -la /folder | wc -l) -eq 83 ]; then true; else false; fi;'
    

如果你的远程命令本身包含单引号,再优先考虑方法一的转义方式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:52:12