execlineb 脚本中的 IF 块语句

execlineb 脚本中的 IF 块语句

我有一个基于 Alpine 的 Docker 容器,它运行S6 覆盖管理其中的两个服务(一个音乐数据库和一个用于管理它的 Web 界面)。问题是第二个服务是可选的,它依赖于${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

经过一番挖掘,execline 中的 If 块变得太过细微。因此,我解决了根本问题:使用容器环境变量将其更改为 sh。

#!/usr/bin/with-contenv sh

...

然后我用来exec执行该过程(否则它不会连接到 S6)。

相关内容