bash 脚本返回 psql 请求将表复制到外部文件的错误"ERROR: syntax error at end of input LINE 1: SELECT"



我该怎么做才能使它工作?

#!/bin/bash
TABLENAMES="user_stats"
ssh -t railsapps@xxx.xxx.xxx.xx -p xxx bash -c "'
for TABLENAME in $TABLENAMES
do
    psql -d mydb -P format=unaligned -P tuples_only -P fieldsep=, -c "SELECT * FROM $TABLENAME" > /tmp/$TABLENAME  
done
'"

一般问题:如何定期转储数据库表从psql数据库在一个单一的bash脚本在Mac OS X上运行到本地机器?

首先,应该远程测试SQL和bash脚本(以交互方式执行SSH)。

我认为你的问题是由引号/双引号的错误组合引起的。我认为星(*)$TABLENAME是在SSH调用之前被消耗的,所以太早了。试着在$符号前加一个反斜杠。

您应该使用verbose或debug选项,以帮助理解实际执行的内容:

ssh -t railsapps@xxx.xxx.xxx.xx -p xxx bash -vxc "'
for TABLENAME in $TABLENAMES; do
    psql -d mydb -P format=unaligned -P tuples_only -P fieldsep=, -c "SELECT * FROM $TABLENAME" > /tmp/$TABLENAME  
done
'"

最新更新