Linux 如何将字符串附加到bash变量以返回另一个变量的值?

Linux 如何将字符串附加到bash变量以返回另一个变量的值?,linux,bash,Linux,Bash,我试图获得其他人的bash,它根据系统的运行位置(z/VM灾难恢复规定)设置各种变量。它被写入一个文件中,该文件包含指定值的变量,如下所示: . /tmp/listofvars IP=${SITE}IP 变量“$SITE”的值在脚本中设置得更高,结果应该是以下两种情况之一:变量列表中保存的生产IP子网值的变量“$PRIP”的值,或虚线显示的变量列表中保存的灾难恢复子网值的变量“$DRIP”的值 实际情况是,$SITE变量的值连接到字符串“IP”,因此结果是“PRIP”或“DRIP”,具体取决

我试图获得其他人的bash,它根据系统的运行位置(z/VM灾难恢复规定)设置各种变量。它被写入一个文件中,该文件包含指定值的变量,如下所示:

. /tmp/listofvars

IP=${SITE}IP
变量“$SITE”的值在脚本中设置得更高,结果应该是以下两种情况之一:变量列表中保存的生产IP子网值的变量“$PRIP”的值,或虚线显示的变量列表中保存的灾难恢复子网值的变量“$DRIP”的值


实际情况是,$SITE变量的值连接到字符串“IP”,因此结果是“PRIP”或“DRIP”,具体取决于我运行脚本的位置。我想要的是$PRIP或$DRIP的值,而不是连接到字符串“IP”的$SITE的值。

您可以将变量引用用作:

echo "${!IP}"

# will print value of $PRIP if $IP=PRIP

您可以将变量引用用作:

echo "${!IP}"

# will print value of $PRIP if $IP=PRIP

您可以将变量引用用作:

echo "${!IP}"

# will print value of $PRIP if $IP=PRIP

您可以将变量引用用作:

echo "${!IP}"

# will print value of $PRIP if $IP=PRIP

+1为正确的方法;根据OP的有点复杂的问题,我猜测寻求的具体答案是
IP=${!SITE}IP
。我想添加另一种方法,您将看到使用eval命令,但不要受到诱惑!这很危险。如果正在求值的变量可以被操纵成包含命令,eval将运行它。+1是正确的方法;根据OP有点复杂的问题,我猜寻求的具体答案是
IP=${!站点}IP
。我想添加另一种方法,您将看到使用eval命令,但不要受到诱惑!这很危险。如果正在求值的变量可以被操纵成包含命令,eval将运行它。+1是正确的方法;根据OP有点复杂的问题,我猜寻求的具体答案是
IP=${!站点}IP
。我想添加另一种方法,您将看到使用eval命令,但不要受到诱惑!这很危险。如果正在求值的变量可以被操纵成包含命令,eval将运行它。+1是正确的方法;根据OP有点复杂的问题,我猜寻求的具体答案是
IP=${!站点}IP
。我想添加另一种方法,您将看到使用eval命令,但不要受到诱惑!这是危险的。如果要求值的变量可以被操纵成包含命令,eval将运行它。依我看,关联数组将是更好的解决方案。但这不仅需要重写此脚本,还需要重写listofvars文件nd任何其他使用listofvars文件的脚本。关联数组将是一个更好的解决方案,依我看。但这将不仅包括重写此脚本,还包括重写listofvars文件和任何其他使用listofvars文件的脚本。依我看,关联数组将是一个更好的解决方案。但这将不仅包括重写此脚本,还包括重写listofvars文件和任何其他使用listofvars文件的脚本。在我看来,关联数组将是一个更好的解决方案。但这将不仅包括重写此脚本,还包括重写listofvars文件和任何其他使用listofvars文件的脚本。