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

如何在Bash中通过SSH执行包含多重引号的Linux命令

SSH执行带多重引号命令的解决方案

多重单引号嵌套会导致Bash命令解析错误,可通过以下几种方法解决:

  • 方法1:转义内层单引号
    Bash单引号包裹的字符串内可通过'\''格式转义单引号,不会打断外层的单引号包裹,示例命令如下:
ssh -t node1 'free -m | awk '\''NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'\'''
  • 方法2:使用带引用的Here Document传递命令
    直接将命令通过标准输入传给远端bash解析,完全规避引号嵌套冲突。给EOF加单引号可以避免本地提前展开变量、特殊符号,命令会原样传递到远端执行:
ssh -t node1 bash << 'EOF'
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
EOF
  • 方法3:替换awk外层引号并转义特殊字符
    将awk的外层单引号替换为双引号,同时转义内部的双引号和$符号,避免本地提前解析:
ssh -t node1 "free -m | awk \"NR==2{printf \\\"Memory Usage: %s/%sMB (%.2f%%)\\n\\\", \\\$3,\\\$2,\\\$3*100/\\\$2 }\""

该方法转义层级多易出错,更推荐前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:54:04