Попытка проверить переменную на наличие сброса и конкретное значение для запуска приложения точки входа Docker в режиме отладки - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь последовать совету по Как проверить, установлена ​​ли переменная в Bash?

Итак, наше приложение разворачивается в кластере AWS ECS с использованием шаблона CloudFormation, а иногданам может потребоваться включить режим отладки.

Кажется, лучший способ - ввести переменную env DEBUG_MODE, чтобы при значении TRUE скрипт entrypoint.sh запускал приложение java с параметрами отладки.

Вот моя последняя попытка, я изначально хотел использовать && для одиночного IF, но получал ошибку, поэтому пытался изолировать ее и разделить на две части:

if [ -z ${DEBUG_MODE+FALSE} ]
then
        echo not debug, not set
else
        if [ $DEBUG_MODE = TRUE ]
        then
                echo debug
        else
                echo not debug, set to $DEBUG_MODE
        fi
fi

Вывод:

user@hostname:~$ export DEBUG_MODE=
user@hostname:~$ sh test.sh
test.sh: 5: [: =: unexpected operator
not debug, set to

Я не могу понять это, как написать это так:

  1. Если DEBUG_MODE не установлен, пуст или что-то кроме TRUE, он выполняет обычную команду Java.
  2. Только если DEBUG_MODE равен TRUE, он выполняет команду Java с параметрами отладки?

Спасибо!

1 Ответ

0 голосов
/ 17 октября 2019

Вы могли бы немного упростить этот скрипт без необходимости сначала проверять, пустой ли он:

#!/bin/bash

if [[ "${DEBUG_MODE}" == 'TRUE' ]]; then
   # Run in debug mode
else
   # Run as usual
fi

Также я заметил, что вы используете sh это решение применимо к bash, но не ваш Dockerобраз уже установлен bash?

Если вам нужно только sh, проблема, похоже, заключается в сравнении, вам может понадобиться заключить переменные в двойные кавычки if [ "$DEBUG_MODE" = TRUE ]

if [ -z "${DEBUG_MODE+FALSE}" ]
then
        echo not debug, not set
else
        if [ "$DEBUG_MODE" = TRUE ]
        then
                echo debug
        else
                echo not debug, set to $DEBUG_MODE
        fi
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...