シェルスクリプトの動的変数名

シェルスクリプトの動的変数名

$prodCIパイプラインにシェルスクリプトをデプロイしていますが、CIには3$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'

my_envまたは、値を指すようにスクリプトで変数を動的に生成する方法を知りたいです。実際の値ではなく文字列値だけを保存するため、できないことを意味します。$prod$dev$test$my_envdev$dev

答え1

あなたはできません:それは変数が機能する方法ではありません。

ただし、シェル関数を呼び出すことで変数の使用を置き換えることができます。これは簡単ですが、使用するシェルによって異なります。残念ながら、記号は/bin/shellこれを知らせません。

zshの場合は次のようになります。

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

...

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

関連情報