Рейтинг:0

Bash-скрипт распознавания версии дампа PostgresSQL

флаг de

Я часто воссоздаю различные базы данных клиентов на локальных докерах. для тестирования новых функций ERP в среде разработки Итак, файл дампа PostgreSQL обычно начинается с:

--
-- Дамп базы данных PostgreSQL
--

-- Сброшено из базы данных версии 13.3 (Ubuntu 13.3-1.pgdg20.04+1)
-- Создан pg_dump версии 13.3 (Debian 13.3-1.pgdg100+1)
...

Вот почему мой bash-скрипт «restorefromdump.sh» (создание временного докера соответствующей версии сервера postgresql для обработки файла дампа) начинается с:

#!/бин/баш
DBDUMP=$1
DUMPFROM=$(grep "^-- Сброшено.*from " "$DBDUMP")
DUMPVERSION_inclSpaces=$(grep -o '^-- Выгружено из.*(' "$DBDUMP" | grep -o -E '[0-9*.]+[^version]')
DUMPVERSION="$(echo -e "${DUMPVERSION_inclSpaces}" | tr -d '[:space:]')"
REMOTEPGVER=postgres:$DUMPVERSION
# вызывает функцию buildtmpdocker для создания временного докера postgres 
buildtmpdocker $REMOTEPGVER 
...

После прямой команды './restorefromdump.sh *.dmp' кажется, работает эффективно - он правильно распознает версию дампа, а может есть способы лучше? Вы привыкли узнавать версию внутри файла дампа с помощью скрипта Bash?

muru avatar
флаг us
Что, по вашему мнению, должно делать регулярное выражение `[0-9*.]+[^version]`?
Andrzej Więcławski avatar
флаг de
он находит числа перед строкой «версия» - пример: | $ тестовый файл nano | содержимое: 'asw123версия' | после сохранения «тестового файла» | $ grep -o -E '[0-9*.]+[^версия]' тестовый файл | результат: '123'
Andrzej Więcławski avatar
флаг de
он находит ТОЛЬКО числа :)
muru avatar
флаг us
Я не знаю, как вы это придумали, но нет, это регулярное выражение делает не это. Он ищет один или несколько экземпляров цифр, `*` или `.`, за которыми следует что-либо, кроме букв `e`, `i`, `n`, `o`, `r`, `s`, `v `.
Andrzej Więcławski avatar
флаг de
Итак, вывод... Каково ваше мнение? Я ошибаюсь, чтобы получить цель: номер версии PostgreSQL, включая баллы?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.