添加更多引用嵌套级别的方法 (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
,而不是执行一个bash
shell来执行它。
sudo docker exec --user postgres \
psql -c "\c database_name" -c "UPDATE table_name SET value_name = 'value';"
我需要使用单个命令修改 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
,而不是执行一个bash
shell来执行它。
sudo docker exec --user postgres \
psql -c "\c database_name" -c "UPDATE table_name SET value_name = 'value';"