【问题标题】:Bash script with psql command tells nothing, but doesn't work带有 psql 命令的 Bash 脚本什么也没说,但不起作用
【发布时间】:2015-02-20 12:33:27
【问题描述】:

我真的对这段代码感到困惑:

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

提前致谢!

【问题讨论】:

  • '$COM' 应该是"'$COM'"

标签: bash postgresql psql


【解决方案1】:

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

echo '$COM'

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多