繁体   English   中英

使用psql命令的Bash脚本什么都不说,但不起作用

[英]Bash script with psql command tells nothing, but doesn't work

我真的很困惑这段代码:

...
COM="psql -d $DBNAME -p $PGPORT -c 'COPY (SELECT * FROM $TABLE_NAME s WHERE cast(s.$COLUMN_NAME as DATE) < DATE '$DATE_STOP' ) TO '$SCRIPTPATH/$ARCHIVE_NAME--$DBNAME' WITH CSV HEADER;'"

su postgres -c '$COM' &> pg_a.log
...

在psql shell中,这个SQL代码工作正常,但是在脚本中,他没有创建存档,也没有告诉我任何错误或失败。

提前致谢!

如果用这个替换“su”命令,你会得到一个提示:

echo '$COM'

你会看到它打印出$ COM - 不是扩展,而是字符串本身。

您可能会发现此方法存在许多其他问题。 你将不得不逃避一堆字符,所以shell不会为你解释它们。 这将是一个真正的痛苦。

我会把sql放到一个文件中,并使用-f选项来psql。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM