Tôi có Docker Container dựa trên Alpine chạy Lớp phủ S6 để quản lý hai dịch vụ bên trong nó (DB nhạc và giao diện web để quản lý). Vấn đề là dịch vụ thứ hai là tùy chọn và nó phụ thuộc vào ${SERVICE_2}
biến môi trường (đúng | sai).
Vì vậy, về cơ bản tôi có cái này, nhưng dịch vụ không thể chạy được vì if
khối không hợp lệ:
#!/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
Thực thi kịch bản trả về:
if: fatal: unterminated block
Nhân tiện, container không có bash
; nó chạy Busybox. Tôi đang cố gắng tránh cài đặt bash trừ khi nó quan trọng.
Không, ngay cả khi không ngắt dòng ``. Cùng một lỗi.
—
DarkGhostHunter
Tôi biết rất ít về
—
Kamil Maciorowski
execlineb
và cho rằng nó tương tự như sh
, kể từ khi bạn if
về cơ bản là giống nhau. Nhưng trang này nói rất khác if
cú pháp và đây có thể là nguyên nhân gây ra lỗi của bạn. Một ý tưởng khác: bạn chạy sh
cuối cùng; tại sao bạn không làm cho kịch bản này sh
kịch bản ở nơi đầu tiên?
Tôi quyết định sử dụng
—
DarkGhostHunter
sh
. Về cơ bản, tôi đã băm /usr/sbin/with-contenv sh
và tiến hành bình thường.
[ $SERVICE_2 = true ] && sh …
?