0
新的Bash用戶在這裏。我試圖從略微不同的網址下載一大堆grib2文件來繪製天氣模型的數據。爲此,我試圖使用嵌套for循環來模擬嵌套數組(因爲bash不支持多維數組),「外部」數組描述特定大氣變量的水平,「內部」數組描述該級別的大氣變量。陣列和循環中的Bash參數替換
我的第一個問題是聲明數組描述大氣變量。當我調用「echo $ {VAR $ {LEV [0]}}」時,我得到一個「錯誤的替代」錯誤。
declare -a LEV=("500_mb" "300_mb")
eval "declare -a VAR${LEV[0]}=("hgt" "abs" "ugrd" "vgrd")"
eval "declare -a VAR${LEV[1]}=("hgt" "tmp" "ugrd" "vgrd")"
我在嵌套的for循環類似的問題,並在$得到一個 「壞替代」 錯誤{VAR#$ {LEV [I]} [@]}。
for ((i=0;i<${#LEV[@]};i++)); do
for ((j=0;j<${#VAR${LEV[i]}[@]};j++)) do
GRIBFILE="/home/mint/opengrads/Contents/gribfiles/${MODEL}/${INIT_INTDATE}${INITHOUR}/${INIT_INTDATE}${INITHOUR}_${FORECASTHOUR}_${LEV[i]}_${VAR[j]}"
CTLFILE="/home/mint/opengrads/Contents/controlfiles/${MODEL}/${INIT_INTDATE}${INITHOUR}/${INIT_INTDATE}${INITHOUR}_${FORECASTHOUR}_${LEV[i]}_${VAR[j]}.ctl"
URL="http://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl?file=gfs.t${INITHOUR}z.pgrb2.0p25.f${FORECASTHOUR}&lev_${LEV[i]}=on&var_${VAR[j]}=on&leftlon=0&rightlon=360&toplat=90&bottomlat=-90&dir=%2Fgfs.${INIT_INTDATE}${INITHOUR}"
wget -O $GRIBFILE $URL
create_control $GRIBFILE $CTLFILE
done
done
我想知道,如果有人知道如何解決這些錯誤或可以提出一個更好的方式來實現的優雅下載所有這些文件所需的手段。
謝謝!
你最好使用像python這樣的語言。 Bash不適合這類問題。 – Robo