gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:03 26 4
gpt4 key购买 nike

我有一个脚本,

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 容器中获得正确的值?

最佳答案

我相信 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

关于linux - 在构建时将变量传递给另一个 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49673153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com