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

在Shell脚本中通过SSH远程执行psql查询遇阻求助

解决远程执行PostgreSQL查询的引号传递问题

嘿,我来帮你搞定这个引号嵌套的麻烦!你的原命令里因为引号混用,导致SQL查询语句没能被正确传递到远程主机,这是shell脚本里很常见的小坑,我给你几个实用的解决方案:

方案1:用单引号包裹echo内容

把echo的整个内容用单引号括起来,这样里面的双引号就会被当作纯字符串,不会被本地shell解析转义,能完整传到远程主机:

$(echo 'psql -U postgres -d mydb -c "SELECT * FROM table_name;"' | ssh $REMOTE_IP)

方案2:直接通过ssh传递命令(更简洁)

其实根本不需要echo,ssh本身就支持直接执行远程命令,把要执行的完整命令用单引号包起来就行,这样本地shell不会解析里面的内容,直接传给远程执行:

ssh $REMOTE_IP 'psql -U postgres -d mydb -c "SELECT * FROM table_name;"'

方案3:用Here Document处理复杂场景

如果你的SQL查询里包含单引号,或者是多行命令,用Here Document会更省心,避免各种转义问题:

ssh $REMOTE_IP <<EOF
psql -U postgres -d mydb -c "SELECT * FROM table_name;"
EOF

额外注意事项

  • 确保$REMOTE_IP变量已经正确设置为目标主机的IP或主机名
  • 远程主机需要支持ssh登录,并且你有权限(如果没配置免密登录,执行时会提示输入密码)
  • 确认远程的postgres用户有权限访问mydb数据库和table_name表

内容的提问来源于stack exchange,提问作者Pedro Osório

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:56:58