我有以下shell语句:
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
。
如何获得退出代码?
答案 0 :(得分:2)
您当前所有子shell命令的代码标准输出结果到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=$?
您可以通过以下方式将docker命令的结果输出到另一个变量中:
result=$(docker ...)
LC_CODE=$?
答案 1 :(得分:0)
考虑将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
放在命令的开头(这不是一种流行的语法)。当然,您可以根据需要将其放在;
之前。