如何组合数组?

时间:2013-10-09 19:42:31

标签: macos bash shell

以下代码段运行良好,但我想优化一点,我在上面指定字体列表。现在我必须在每次给出相同的字体名称时指定顶部和调用函数。如何将这些字体分组在顶部然后只调用函数以读取每个元素?我不确定如何在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 个答案:

答案 0 :(得分:1)

有几种选择:

  1. 您可以使用all=( "${MENU_ENGRUSFRA[@]}" "${DASHBOARD_1[@]}")
  2. 制作单个数组
  3. 您可以修改process_ipad以简单地获取字体名称列表,而不是数组名称。这可能更可取:

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