修正する

修正する

申し訳ありません。とても混乱しています。 (残念です。)
もっと簡単な例を挙げて、もう一度説明します。

#define a new var and export it to the "env":
export VAR_ONE=thisIsVarOne
# check if it was created:
env | grep VAR_ONE      #this displays: "VAR_ONE=thisIsVarOne"
# use it in a simple echo command:
echo VAR_ONE=$VAR_ONE  #this displays: "VAR_ONE=thisIsVarOne"

# create a new var with the name that contains the value of VAR_ONE ("newvarthisIsVarOne") in its name:
export newvar${VAR_ONE}="somePrefix${VAR_ONE}"  
# verify if it has been created:
env | grep newvar  # this displays: "newvarthisIsVarOne=somePrefixthisIsVarOne"

今私の質問は次のとおりです。

この新しい複合変数をどのように使用しますか?
注: env | grep newvar次の名前のファイルがあることを示します。newvar${VAR_ONE}

しかし、私はできません。住所echo コマンドなどの新しい変数。私は試しましたが、 echo ${newvar${VAR_ONE}}
これは私に与えたbash: ${newvar${VAR_ONE}}: bad substitution

制限要因:

  1. VAR_ONEの値は変更される可能性があるため、新しく作成された変数を処理するために使用することはできません。
  2. 静的名では新しい変数を宣言できません。使用するには、スクリプトでVAR_ONE新しく生成された変数名の一部としてキーワードが必要です。変数名は次のようにする必要があります。newvar${VAR_ONE}

よろしくお願いします。

ベストアンサー1

設定:

export VAR_ONE=thisIsVarOne

あなたはbash 4.3+それを使うことができますnamerefdeclare -n):

$ declare -n _var="newvar${VAR_ONE}"            # nameref; define new var name and associate with nameref variable '_var' (can be any valid variable name)
$ _var="somePrefix${VAR_ONE}"                   # assign value to nameref

$ echo "${!_var}"                               # show nameref association
newvarthisIsVarOne

$ echo "${_var}"                                # show value
somePrefixthisIsVarOne

$ echo "${newvarthisIsVarOne}"                  # explicitly reference new variable by name
somePrefixthisIsVarOne

おすすめ記事