我对bash脚本有一些麻烦,也许有人可以帮助我。
在我的脚本中,我使用如下循环来动态定义变量:
somecolors="red yellow green blue" # read out of a file, may vary
for color in $(echo $somecolors); do
# Actually, here is more code that generates the value I
# want to set for this variable, that is being written
# into "$value"
declare use_color_$color=$value
done
结果是定义了四个变量:
use_color_red=1
use_color_yellow=1
use_color_green=1
use_color_blue=1
到现在为止还挺好。但是如何动态阅读这些内容?我想到起诉“ for”循环。例如:
for color in $(echo $colors); do
echo $use_color_${color}
done
但这是行不通的。
如何将两个变量名组成一个?
提前致谢!
最好改用索引数组和关联数组。引用和取消引用变量变量确实是错误的。
somecolors=(red yellow green blue)
declare -A use_color
for color in "${colors[@]}"; do
use_color[$color]=$value ## Or do you mean use_color[$color]=$color?
done
准予$value == 1
,当你做的时候echo "${use_color[red]}"
你会得到1
。
一种变化:
declare colors=(red yellow green blue)
declare -A use_color
use_color[red]=1
use_color[yellow]=1
use_color[green]=1
use_color[blue]=1
for color in "${colors[@]}"; do
echo "use_color[$color]=${use_color[$color]}"
done
输出:
use_color[red]=1
use_color[yellow]=1
use_color[green]=1
use_color[blue]=1
类似地:
declare -A use_color=([red]=1 [yellow]=1 [green]=1 [blue]=1)
for color in "${!use_color[@]}"; do
echo "use_color[$color]=${use_color[$color]}"
done
输出:
use_color[yellow]=1
use_color[red]=1
use_color[blue]=1
use_color[green]=1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句