在我的脚本中,我有一个未知数的变量,其中包含要转换为矢量的角度。我创建了变量名,使得每个'参数'的角度的形式为: {parameter} _angle_ {lat/perp} 因此,每个参数都有一个'lat'和'perp'角度变量。 所以我想要做的是找到所有包含'_angle_lat'的变量,对这些变量的值做一些计算并创建一个包含'参数'名称的新变量。 例如:Bash:通过名称中包含模式的变量循环
export M0_angle_lat=4
export M1_angle_lat=70
export M1_angle_perp=8
export M0_angle_perp=90
# Now I want to use these values to calculate vectors
for varname in *_angle_lat
do
# at first iteration it will get for example "varname=M0_angle_lat" in which case
# I want it to do:
M0_X=$(($M0_angle_lat * $M0_angle_perp))
# The second iteration in case would then give "varname=M1_angle_lat" in which case
# I want it to do:
M1_X=$(($M1_angle_lat * $M1_angle_perp))
done
我希望这是清楚我的目标是在这里。谢谢您的帮助!
'bash'确实不是这种类型的编程语言。它确实有数组,但它们不适合构建更复杂的数据结构,并且尝试使用动态生成的变量名编写代码的情况最容易出错。 (虽然'bash' 4.3引入了一个使它更简单的特性。) – chepner 2014-09-10 12:32:19
我使用'bash'的原因是因为它是一个小型脚本,必须在集群上调用,所有周围的代码和脚本也都在bash中。 – Bjorn 2014-09-10 12:37:16
如果您可以通过前缀重写您的变量以匹配,那么您可以使用'$ {!prefix *}'和'$ {!prefix @}'扩展来获取以'prefix'开头的变量名称。 – 2014-09-10 13:49:53