首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在shell脚本中组合exec命令

如何在shell脚本中组合exec命令
EN

Stack Overflow用户
提问于 2021-11-03 10:47:12
回答 1查看 102关注 0票数 0

我在码头上运行postgreSQL。为了访问我运行的容器

代码语言:javascript
复制
winpty docker exec -it postgres_db bash

现在我已经在docker容器中了,我运行它来访问postgres服务器中的用户'postgres‘

代码语言:javascript
复制
psql -U postgres

然后我要做的就是创建一个数据库

代码语言:javascript
复制
create database test;

我能按顺序在剧本里这样做吗?我想要这样的东西:

代码语言:javascript
复制
#!/bin/bash
winpty docker run -p 8005:5432 --name postgres_db -e POSTGRES_PASSWORD=password -d postgres
sleep 5
winpty docker exec -it postgres_db bash -c "psql -U postgres" [-c "create database test;"]

如果im不在"psql -U postgres“中,则无法执行create数据库。显然,-c的最后一行“创建数据库测试”(Create)是错误的,只是让您理解我想要做的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-03 11:41:04

代码语言:javascript
复制
winpty docker exec -it postgres_db bash -c "psql -U postgres -c 'CREATE DATABASE test;'"

bash -cpsql -c都以一个shell字作为输入。单引号或双引号是一个单词。您需要嵌套引号,就像嵌套-c命令一样。

备选方案:

代码语言:javascript
复制
winpty docker exec -it postgres_db bash -c "psql -U postgres -c \"CREATE DATABASE test;\""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69823516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档