bash - 添加更多引用嵌套级别的方法(docker + bash + psql)
问题描述
我需要使用单个命令在 docker 中修改 postgreSQL 表中的值。我想在容器中运行这样的东西:
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*"
吗?上面命令周围的引号类型都不能使它工作。先感谢您!
解决方案
您应该能够su
通过告诉docker exec
自己应该运行哪个用户来避免使用psql
。您也可以psql
直接运行,而不是执行bash
执行它的 shell。
sudo docker exec --user postgres \
psql -c "\c database_name" -c "UPDATE table_name SET value_name = 'value';"