运行SQL时,Bash中的“ – EOSQL”代码块是什么?

我需要执行一个包含SQL的bash脚本,所以我使用一个脚本来将自定义configuration添加到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是什么? 我似乎无法find关于这个命令或关键字的很多信息。

EOSQL是Bash Here文档块的限制string。 限制string可以是任何不出现在您的块中的文本。 它表示文本块的开始和结束。

在这里的文档中,variablesreplace将像正常一样工作:

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

然后用variables集运行它:

 $ MY_EXTENSION=something ./test.sh something 

在Docker中,您需要在您的Dockerfile docker run -e MY_EXTENSION=something <image> ENV MY_EXTENSION=something ,或者在您的命令行上docker run -e MY_EXTENSION=something <image>来设置环境。