运行SQL时,Bash中的`

我需要执行一个包含sql的bash脚本,所以我使用脚本将自定义配置添加到Postgres Docker容器中,根据这里的文档:

https://github.com/docker-library/docs/tree/master/postgres#how-to-extend-this-image

但我不知道EOsql意味着什么.以下是从上述文档中获取的脚本示例:

#!/bin/bash
set -e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOsql
    CREATE USER docker;
    CREATE DATABASE docker;
    GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
    CREATE EXTENSION $MY_EXTENSION;
EOsql

那么,什么是EOsql?我似乎无法找到有关此命令或关键字的更多信息.

最佳答案
EOsqlBash Here Document块的限制字符串.限制字符串可以是块中未显示的任何文本.它表示文本块的开头和结尾.

变量替换在这里的文档中正常工作:

#!/usr/bin/env bash
cat <<-EOF
$MY_EXTENSION
EOF

然后使用变量set运行它:

$MY_EXTENSION=something ./test.sh
something

在Docker中你需要ENV MY_EXTENSION =你的Dockerfile或docker中的东西运行-e MY_EXTENSION = something< image>在您的命令行上,以设置环境.

相关文章

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...