首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取退出代码?

如何获取退出代码?
EN

Stack Overflow用户
提问于 2020-08-06 03:43:25
回答 2查看 65关注 0票数 0

我有以下shell语句:

代码语言:javascript
复制
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中的值为:

代码语言:javascript
复制
echo $LC_CODE
<===========================================>
Check if all variables are set
<===========================================>
1

但是,我想要获得退出代码,而不是文本Check if all variables are set。我怎样才能得到退出代码?

EN

回答 2

Stack Overflow用户

发布于 2020-08-06 03:55:54

您当前的代码将所有子外壳命令的stdout结果转换为LC_CODE变量。我建议运行以下命令:

代码语言:javascript
复制
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=$?

您可以通过以下方式将docker命令的stdout结果转换为另一个变量:

代码语言:javascript
复制
result=$(docker ...)
LC_CODE=$?
票数 2
EN

Stack Overflow用户

发布于 2020-08-06 09:39:37

考虑将docker命令的输出发送到/dev/null,如下所示:

代码语言:javascript
复制
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放在命令的开头(这不是一种流行的语法)。当然,如果你愿意,你可以把它放在;之前。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63272496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档