gpt4 book ai didi

bash - 运行 SQL 时 Bash 中的 `<<-EOSQL` 代码块是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:22:13 36 4
gpt4 key购买 nike

我需要执行一个包含 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 的限制字符串堵塞。它向 bash 解释器表示文本 block 的开始和结束。限制字符串可以是 block 中没有出现的任何文本。

变量替换将在此处文档中正常工作:

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

然后使用变量集运行它:

$ MY_EXTENSION=something ./test.sh
a
something
b

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

关于bash - 运行 SQL 时 Bash 中的 `<<-EOSQL` 代码块是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800277/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com