0

更新了工作代码

我正在尝试逐一检查 ${fontArray} 中列出的已安装字体,并将未找到的任何字体添加到新数组 ${missingFonts} 中,我可以稍后将其打印为更长的“构建后健康检查”的一部分在我的环境中的每台机器上运行。

    Var19="Fonts"
fontArray=("font1" "font2" "font3")
missingFonts=()
for i in "${fontArray[@]}"; do
    system_profiler SPFontsDataType | grep "Full Name: $i" | sed 's/.*: //'
    if ! system_profiler SPFontsDataType | grep -q "Full Name: $i"; then 
        missingFonts+=("$i");
    fi
done

if [ ${#missingFonts[@]} -eq 0 ]; then
    Val9="Fonts Installed"
    Check19=PASS
else
    Val19="Missing Fonts: ${missingFonts[@]}"
    Check19=FAIL
fi

Line19=" | ${Check19} | ${Var19}        = ${Val19} "

echo "$Line19"

exit 0

返回

| FAIL | Fonts      = Missing Fonts: font1 font2 font3

提前感谢您帮助老狗学习新技巧!

4

1 回答 1

1

感谢@DavidC.Rankin的协助!

那为什么不呢

if ! system_profiler SPFontsDataType | grep -q "Full Name: $i"; 
then missingFonts+=("$i"); 
fi 

添加缺少的字体?除非您需要,否则不要担心用 sed 剥离前缀。那应该建立您丢失的字体列表

于 2020-03-12T21:05:27.390 回答