在我的腳本中,我有一個未知數的變量,其中包含要轉換爲矢量的角度。我創建了變量名,使得每個'參數'的角度的形式爲: {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