shell脚本中的动态变量名

shell脚本中的动态变量名

我正在将 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_envdev$dev

答案1

你不能:变量不是这样工作的。

但是您可以通过调用 shell 函数来替换任何使用变量的地方。这很简单,但这取决于您使用的 shell;可悲的是,你的象征/bin/shell并没有告诉我们!

对于 zsh 来说,类似

check_env() {
   # do your checking
   print "prod"  # or "test" or whatever
}

...

if [[ "$(check_env)" = "prod" ]] {
   rm -rf /
}

相关内容