如何在shell腳本中組合exec命令

尼科

我在 docker 上運行 postgreSQL。為了訪問我運行的容器

winpty docker exec -it postgres_db bash

現在我在 docker 容器中,我運行它以在 postgres 服務器中以用戶“postgres”的身份訪問

psql -U postgres

然後我想做的是創建一個數據庫

create database test;

我可以在腳本中按順序執行此操作嗎?我想要這樣的東西:

#!/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;"]

如果我不在“psql -U postgres”中,則無法執行創建數據庫。顯然最後一行-c "create database test;" 是錯的,只是為了讓你明白我想做什麼。

winpty docker exec -it postgres_db bash -c "psql -U postgres -c 'CREATE DATABASE test;'"

雙方bash -cpsql -c採取一個外殼字作為輸入。單引號或雙引號字符串是一個單詞。您需要嵌套引號,就像-c嵌套命令一樣

選擇:

winpty docker exec -it postgres_db bash -c "psql -U postgres -c \"CREATE DATABASE test;\""

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章