加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

运行SQL时,Bash中的`

发布时间:2020-12-16 03:28:03 所属栏目:安全 来源:网络整理
导读:我需要执行一个包含SQL的bash脚本,所以我使用脚本将自定义配置添加到Postgres Docker容器中,根据这里的文档: https://github.com/docker-library/docs/tree/master/postgres#how-to-extend-this-image 但我不知道EOSQL意味着什么.以下是从上述文档中获取的

我需要执行一个包含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?我似乎无法找到有关此命令或关键字的更多信息.

最佳答案
EOSQL是Bash 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>在您的命令行上,以设置环境.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读