Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos bash脚本返回错误";错误:输入行1结尾的语法错误:选择;用于将表复制到外部文件的psql请求_Macos_Bash_Select_Psql - Fatal编程技术网

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
'"