在构建时将变量传递给另一个shell脚本

时间:2018-04-05 13:05:21

标签: linux bash shell

我有一个脚本,

PREFIX=${PREFIX:-'D1'}
echo "PREFIX is $PREFIX"
docker run -e PREFIX=$PREFIX -it  tci-deployer /bin/bash

我通过获取PREFIX参数

来运行此脚本
export PREFIX=demo

我的问题是,我正在运行另一个脚本,它将上述脚本复制到另一个位置并尝试运行它。运行后,PREFIX值设置为Docker容器内的D1而不是源代码。 如何在将其复制到另一个位置之前使另一个脚本评估该值,以便在docker容器中获得正确的值?

1 个答案:

答案 0 :(得分:0)

我相信envsubst工具可以满足您的需求。它将使用当前shell中的值替换$ PREFIX的任何实例。它不会改变" PREFIX = $ {PREFIX: - ' D1'}"但是,这可以通过改变变量的初始化方式来处理(使用if语句而不是更紧凑的形式。例如文件foo包含:

if [ -n "$PREFIX" ]
then
    PREFIX=${PREFIX:-D1}
fi
echo PREFIX is $PREFIX
shell中的

和PREFIX = B,命令

cat foo | envsubst >foo1

文件foo1将包含:

if [ -n "B" ]
then
    PREFIX=${PREFIX:-D1}
fi
echo PREFIX is B