Оператор блока IF внутри скрипта execlineb
У меня есть Docker-контейнер на основе Alpine, который запускает S6 Overlay для управления двумя службами внутри него (музыкальной базой данных и веб-интерфейсом для управления им). Проблема в том, что второй сервис не является обязательным, и это зависит от ${SERVICE_2}
переменная окружения (true|false).
Итак, в основном у меня есть это, но служба не может работать, потому что if
блок недействителен:
#!/usr/bin/execlineb -P
with-contenv
if [ $SERVICE_2 = true ]; then \
sh -c "exec -a service_2 /usr/bin/php /var/www/service_2_music_admin_script.php >> /proc/self/fd/1 2>&1" \
;fi
Выполнение сценария возвращает:
if: fatal: unterminated block
Кстати, контейнер не имеет bash
; работает Busybox. Я пытаюсь избежать установки Bash, если это не критично.
1 ответ
После некоторого копания блок If в execline стал слишком нюансом. Итак, я решил основную проблему: изменил на sh с переменными среды контейнера.
#!/usr/bin/with-contenv sh
...
Тогда я использовал exec
выполнить процесс (в противном случае он не подключается к S6).