【问题标题】:How to escape quotes in docker exec bash command如何在 docker exec bash 命令中转义引号
【发布时间】: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 execbash -c 包装器吗?

标签: postgresql bash docker


【解决方案1】:

从容器内部运行它

docker exec -it postgres_container_name "psql your_connection_string" 

你的情况

docker container exec 1b8 bash -c "psql -c \"SELECT * FROM information_schema.tables where table_name='user_mappings'\" > /tmp/output"

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 2010-11-18
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 2018-10-19
    相关资源
    最近更新 更多