Как получить код выхода? - PullRequest
       126

Как получить код выхода?

0 голосов
/ 05 августа 2020

У меня есть следующий оператор оболочки:

LC_CODE=$(   
  docker run --rm --name argocd-test \
    -e DO_AC=$DO_AC \
    -e K8S_CLUSTER=k8s-databaker-io \
    -e ARGO_SERVER=cd.databaker.io \
    -e ARGO_USERNAME="$ARGO_USERNAME" \
    -e ARGO_PW="$ARGO_PW" \
    -e IMAGE_URL=hub.databaker.io/ui/argo-ui-test \
    -e IMAGE_VERSION=0.1.2 \
    -e CHARTS_URL=gitlab.com/databaker.io/charts.git \
    -e GITOPS_URL=gitlab.com/databaker.io/gitops.git \
    -e APP_TYPE=ui \
    -e APP=argo-ui-test \
    -e APP_URL="$LC_APP_URL" \
    -e APP_TLS_SECRET="dev-cert-staging" \
    -e GIT_USER="$GIT_USER" \
    -e GIT_AT=$GIT_AT \
    -e NAMESPACE=dev \
    argocli:latest /sh/main.sh;
  echo $?
)

значения, которые сохраняются в LC_CODE:

echo $LC_CODE
<===========================================>
Check if all variables are set
<===========================================>
1

Однако я хотел бы получить код выхода, а не текст Check if all variables are set. Как я могу получить код выхода?

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Текущий результат вывода всех команд суб-оболочки в переменную LC_CODE. Я предлагаю выполнить следующие команды:

docker run --rm --name argocd-test \
    -e DO_AC=$DO_AC \
    -e K8S_CLUSTER=k8s-databaker-io \
    -e ARGO_SERVER=cd.databaker.io \
    -e ARGO_USERNAME="$ARGO_USERNAME" \
    -e ARGO_PW="$ARGO_PW" \
    -e IMAGE_URL=hub.databaker.io/ui/argo-ui-test \
    -e IMAGE_VERSION=0.1.2 \
    -e CHARTS_URL=gitlab.com/databaker.io/charts.git \
    -e GITOPS_URL=gitlab.com/databaker.io/gitops.git \
    -e APP_TYPE=ui \
    -e APP=argo-ui-test \
    -e APP_URL="$LC_APP_URL" \
    -e APP_TLS_SECRET="dev-cert-staging" \
    -e GIT_USER="$GIT_USER" \
    -e GIT_AT=$GIT_AT \
    -e NAMESPACE=dev \
    argocli:latest /sh/main.sh;

LC_CODE=$?

Вы можете stdout результат вашей docker команды в другую переменную:

result=$(docker ...)
LC_CODE=$?
0 голосов
/ 06 августа 2020

Рассмотрите возможность отправки вывода команды docker на /dev/null следующим образом:

LC_CODE=$(   
  >/dev/null docker run --rm --name argocd-test \
    -e DO_AC=$DO_AC \
    -e K8S_CLUSTER=k8s-databaker-io \
    -e ARGO_SERVER=cd.databaker.io \
    -e ARGO_USERNAME="$ARGO_USERNAME" \
    -e ARGO_PW="$ARGO_PW" \
    -e IMAGE_URL=hub.databaker.io/ui/argo-ui-test \
    -e IMAGE_VERSION=0.1.2 \
    -e CHARTS_URL=gitlab.com/databaker.io/charts.git \
    -e GITOPS_URL=gitlab.com/databaker.io/gitops.git \
    -e APP_TYPE=ui \
    -e APP=argo-ui-test \
    -e APP_URL="$LC_APP_URL" \
    -e APP_TLS_SECRET="dev-cert-staging" \
    -e GIT_USER="$GIT_USER" \
    -e GIT_AT=$GIT_AT \
    -e NAMESPACE=dev \
    argocli:latest /sh/main.sh ;
  echo $?
)

Для акцента я поставил >/dev/null в начале команды (это не популярный синтаксис). Конечно, вы можете поставить его перед ;, если хотите.

...