添加更多引用嵌套级别的方法 (docker + bash + psql)

Ways to add one more quote nesting level (docker + bash + psql)

我需要使用单个命令修改 docker 中 postgreSQL table 中的值。我想在容器中 运行 像这样的东西:

su - postgres -c "psql -c \"\c database_name\" -c \"UPDATE table_name SET value_name = 'value';\""

事实证明这是唯一的方法,因为 echo "\c database_name \ UPDATE table_name SET value_name = 'value';" | psql 在我的 postgreSQL 中不起作用导致

invalid command \

我可以通过命令 sudo docker exec -it container_name bash -c "*command above*" 在容器中 运行 做些什么吗? None 上面 命令周围的引号类型 使它起作用。提前致谢!

您应该能够通过告诉 docker exec 本身哪个用户应该 运行 psql 来避免使用 su。你也可以直接运行psql,而不是执行一个bashshell来执行它。

sudo docker exec --user postgres \
  psql -c "\c database_name" -c "UPDATE table_name SET value_name = 'value';"