【发布时间】:2021-07-11 18:15:21
【问题描述】:
我正在尝试在 docker 中执行 bash 命令,但我无法弄清楚如何在我的命令中转义表名 user_mappings 周围的单引号。我试过反斜杠、双单引号和双引号单引号。
我知道如果我不将命令包装在 bash -c 中,我可以绕过它,但我需要这样做,以便我可以将输出重定向到容器中的文件。
# docker container exec 1b8 bash -c 'psql -c "SELECT * FROM information_schema.tables where table_name='user_mappings'" > /tmp/output'
ERROR: column "user_mappings" does not exist
LINE 1: ...* FROM information_schema.tables where table_name=user_mappi...
【问题讨论】:
-
我会切换到在外层使用双引号......更容易让外壳按照你的意愿解释它。试试这个
docker container exec 1b8 bash -c "psql -c \"SELECT * FROM information_schema.tables where table_name='user_mappings'\" > /tmp/output"如果你真的想使用单引号......检查this question。 -
能否直接在应用程序代码中执行此 SQL 查询,而不是通过调试 shell?或者,您可以直接在您的主机上运行
psql,而不使用docker exec或bash -c包装器吗?
标签: postgresql bash docker