我正在将 shell 脚本部署到 CI 管道,CI 上定义了三个不同的环境变量: $prod
、$dev
、$test
。
我的脚本设法根据部署类型返回正确的字符串值:
#!/bin/sh
my_env = // the checking logic
# the value of my_env is a string value of one of 'prod', 'dev' or 'test'
我想知道如何在我的脚本中动态地创建一个变量来指向or或 的my_env
值?我的意思是我不能,因为它只保存字符串值,而不是 的实际值。$prod
$dev
$test
$my_env
dev
$dev
答案1
你不能:变量不是这样工作的。
但是您可以通过调用 shell 函数来替换任何使用变量的地方。这很简单,但这取决于您使用的 shell;可悲的是,你的象征/bin/shell
并没有告诉我们!
对于 zsh 来说,类似
check_env() {
# do your checking
print "prod" # or "test" or whatever
}
...
if [[ "$(check_env)" = "prod" ]] {
rm -rf /
}