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

时间:2015-02-20 12:33:27

标签: bash postgresql psql

我对这段代码感到困惑:

...
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代码工作正常,但是在脚本中他没有创建存档,也没有告诉我任何错误或失败。

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

echo '$COM'

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

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

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