2016-08-06 1 views
4

мне нужно выполнить Баш скрипт, содержащий SQL, поэтому я использую скрипт для добавления пользовательских конфигураций в контейнер Postgres Докер, согласно документации здесь:Что такое блок кода «<< - EOSQL» в Bash при запуске SQL?

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

Но я не знаю, что EOSQL означает. Ниже приведен пример моего сценария, взятого из приведенных выше документов:

Итак, что такое EOSQL? Я не могу найти много информации об этой команде или ключевом слове.

+0

Код в порядке; вы уверены, что перед запуском этого скрипта была экспортирована MY_EXTENSION'? – chepner

+1

'EOSQL' не является ключевым словом; это просто произвольная строка (End Of SQL), используемая для обозначения границ этого документа. – chepner

+0

Ах да, переменные окружения работают нормально. У меня была еще одна ошибка, которая, как я думал, была вызвана тем, что переменные среды не загружаются. Я обновил свой вопрос, касающийся блока EOSQL и Bash Here Document, что стало причиной моего непонимания. – modulitos

ответ

7

EOSQL является предельной строкой для блока Bash Here Document. Предельная строка может быть любым текстом, который не отображается в вашем блоке. Это означает начало и конец текстового блока.

Подстановка будет работать в нормальном режиме в здесь документе:

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

Затем выполняется, что с переменным набором:

$ MY_EXTENSION=something ./test.sh 
something 

В Докер вам потребуется ENV MY_EXTENSION=something в вашем Dockerfile или docker run -e MY_EXTENSION=something <image> на вашем командной строки для среды, которую нужно настроить.