从bash中的名称列表计算变量

从bash中的名称列表计算变量,bash,Bash,我希望上面的bash脚本打印出“True find”。但它不打印任何内容。关于原因有什么想法吗?提出以下建议: vars="a,b" a="True" b="False" IFS="," for var in $vars; do if [[ "$var" = "True" ]]; then echo "True found" fi done ${!varname}展开$varname中命名的变量。否则,您将获得名称本身,而不是具有该名称的变量的内容 有关更多详细信息,请

我希望上面的bash脚本打印出“True find”。但它不打印任何内容。关于原因有什么想法吗?

提出以下建议:

vars="a,b"
a="True"
b="False"
IFS=","
for var in $vars; do
  if [[ "$var" = "True" ]]; then
    echo "True found"    
  fi
done
${!varname}
展开
$varname
中命名的变量。否则,您将获得名称本身,而不是具有该名称的变量的内容


有关更多详细信息,请参阅。

vars=“a,b”
不是数组,您需要间接变量。请看,您希望bash对变量内容进行双重计算。它不会那样做的。您需要自己进行第二级间接寻址……事实上,呃,为什么您希望
$var
计算为
True
False
,与
a
b
不同,将
set-x
添加到此脚本顶部,查看每个步骤实际发生的情况,以更好地了解正在发生的情况。间接变量。美好的直到。
if [[ "${!var}" = "True" ]]; then