2013-10-09 35 views
0

下面的代碼片段效果很好,但是我想優化一點,我指定頂部的字體列表。現在我必須指定頂部以及每次再次提供相同字體名稱時的調用函數。如何將這些字體分組在頂部,然後調用函數來讀取每個元素?我不知道怎麼做,在Shell腳本(OSX,但我認爲這是非常接近普通的UNIX shell)如何組合數組?

# font list 
MENU_ENGRUSFRA=("menu-engrusfra" "menu-engrusfra") 
DASHBOARD_1=("dashboard-1" "dashboard-1") 
# ... more goes here 

process_ipad() { 
    fontarr=("${!1}") 
    project=${fontarr[0]}${PROJECT_EXT} 
    hdfnt=${fontarr[1]}${HD_SUFFIX_IPAD} 
    sdfnt=${fontarr[1]} 

    # create HD .fnt 
    GDCL $project $OUTPUT_IPAD_DIR$hdfnt 

    # need arm conv for HD? 
    contains $hdfnt "arm" && $ARM_CONV $OUTPUT_IPAD_DIR$hdfnt$FNT_EXT 

    # create SD .fnt 
    GDCL $project $OUTPUT_IPAD_DIR$sdfnt -rfs 0.5 

    # need arm conv for SD? 
    contains $sdfnt "arm" && $ARM_CONV $OUTPUT_IPAD_DIR$sdfnt$FNT_EXT 

    echo "Done $sdfnt" 
} 

process_ipad MENU_ENGRUSFRA[@] 
process_ipad DASHBOARD_1[@] 
# sadly I have to mention here them as well 

回答

1

有幾個選項:

  1. ,您可以撥打單個陣列與all=("${MENU_ENGRUSFRA[@]}" "${DASHBOARD_1[@]}")
  2. 您可以修改process_ipad只需一個字體名稱列表,而不是數組的名稱。這可能是優選的:

    process_ipad() { 
        fontarr=("[email protected]") 
        ... 
    } 
    
    # all=("${MENU_ENGRUSFRA[@]}" "${DASHBOARD_1[@]}") 
    # process_ipad "${all[@]}" 
    process_ipad "${MENU_ENGRUSFRA[@]}" "${DASHBOARD_1[@]}"