从bash中的名称列表计算变量
我希望上面的bash脚本打印出“True find”。但它不打印任何内容。关于原因有什么想法吗?提出以下建议:从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中命名的变量。否则,您将获得名称本身,而不是具有该名称的变量的内容 有关更多详细信息,请
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