Macos bash脚本返回错误";错误:输入行1结尾的语法错误:选择;用于将表复制到外部文件的psql请求
我该怎么做才能让它工作Macos bash脚本返回错误";错误:输入行1结尾的语法错误:选择;用于将表复制到外部文件的psql请求,macos,bash,select,psql,Macos,Bash,Select,Psql,我该怎么做才能让它工作 #!/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
#!/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
'"
一般问题:如何在Mac OS X上运行的单个bash脚本中定期将数据库表从psql数据库转储到本地计算机?首先,您应该远程测试SQL和bash脚本(以交互方式执行SSH) 我认为你的问题是由报价/双报价的错误组合造成的。我认为star
(*)
和$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
'"