容器内的环境变量,但不用于bash脚本



我有一个在docker容器内运行的应用程序。首先构建映像,然后运行容器。我的运行命令是:

docker run --rm -it -e MODE=custom -e Station=RT -e StartDateReport=2022-09-10 -e Period=1 my-image:1.0.0

我声明变量MODE, Station, StartDateReport and Period为环境变量。当我从容器启动终端并输入echo $MODE时,我将得到正确的值custom

到目前为止,很好,但我有兴趣在bash script中使用这些变量。例如在start.sh中,我有以下代码:

#!/bin/bash
if [[ $MODE == custom ]]; then
// do sth
fi

,这里在脚本中我的变量MODEundefined,因此我得到错误的结果。

编辑

如下面的注释所述,我的应用程序是基于cronjob开始运行的。

我设法自己解决了这个问题,答案在评论中。

在您的环境中,您的变量定义是否具有

形式
export MODE="custom"

修改后的脚本版本:

#!/bin/bash
test -z "${MODE}" && ( echo -e "nt  MODE was not exported from calling environment.n" ; exit 1 )
if [[ $MODE == custom ]]
then
#// do sth
echo "do sth"
fi

我找到了这个问题的解决方案,所以我将在这里发布答案,以帮助其他有同样问题的人。我在这里找到了解决方案:如何在容器

中加载Docker环境变量我在start.sh中包含了export xargs --null --max-args=1 echo < /proc/1/environ

因此,start.sh将是:

#!/bin/bash
export xargs --null --max-args=1 echo < /proc/1/environ
if [[ $MODE == custom ]]; then
// do sth
fi

最新更新