Я читал этот пример о настройке кластера с помощью pgpool и Watchdog и решил попробовать его в качестве упражнения.
Я далек от того, чтобы быть мастером оболочки сценариев, но я мог следовать документации и изменять ее в соответствии с настройками моих виртуальных машин. Но я не понимаю, какова цель следующего фрагмента:
if [ ${PGVERSION} -ge 12 ]; then
sed -i -e \"\\\$ainclude_if_exists = '$(echo ${RECOVERYCONF} | sed -e 's/\//\\\//g')'\" \
-e \"/^include_if_exists = '$(echo ${RECOVERYCONF} | sed -e 's/\//\\\//g')'/d\" ${DEST_NODE_PGDATA}/postgresql.conf
fi
В моем случае PGVERSION будет 12
(поэтому скрипт выполнит код после условия), RECOVERYCONF - /usr/local/pgsql/data/myrecovery.conf
и DEST_NODE_PGDATA равно /usr/local/pgsql/data
.
Я получаю (пожалуйста, извините и поправьте меня, если я ошибаюсь), что -e указывает, что следующий сценарий идет, часть $ (некоторые команды) оценивает выражение и возвращает результат и что регулярное выражение sed указывает, что символы '/' будут заменены на \ / (forward sla sh и sla sh). Что меня озадачивает, так это части "\\\$ainclude_if_exists ="
и "/^include_if_exists"
, я не знаю, что они означают и для чего предназначены, ни как они взаимодействуют. Кроме того, меня смущает -e после первого регулярного выражения sed.
Если вас интересует контекст, эти команды находятся в конце примера сценария /var/lib/pgsql/11/data/recovery_1st_stage
.
Спасибо заранее на ваше время.