Что такое блок кода "<< - EOSQL " в Bash при запуске SQL?
Мне нужно выполнить скрипт bash, содержащий SQL, поэтому я использую скрипт для добавления пользовательских конфигураций в контейнер 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? Я не могу найти много информации об этой команде или ключевом слове.
1 ответ:
EOSQLпредел строку Баш вот документ блок. Строкой ограничения может быть любой текст, который не отображается в вашем блоке. Он обозначает начало и конец текстового блока.Подстановка переменных будет работать как обычно в документе here:
#!/usr/bin/env bash cat <<-EOF $MY_EXTENSION EOFЗатем запускаем его с переменным набором:
$ MY_EXTENSION=something ./test.sh somethingВ Docker вам понадобится
ENV MY_EXTENSION=somethingв вашемDockerfileилиdocker run -e MY_EXTENSION=something <image>в командной строке для настройки среды.
Comments