проверка скрипта bash на наличие установленных шрифтов из списка в массиве и цикла для выполнения команд
Обновлен рабочий код
Я пытаюсь один за другим проверить наличие установленных шрифтов, перечисленных в ${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
Заранее благодарим за помощь старой собаке в освоении новых трюков!
1 ответ
Решение
Спасибо @DavidC.Rankin за помощь!
Почему бы и нет тогда
if ! system_profiler SPFontsDataType | grep -q "Full Name: $i"; then missingFonts+=("$i"); fi
добавить недостающие шрифты? Не беспокойтесь об удалении префикса с помощью sed, если вам не нужно. Это должно создать ваш список недостающих шрифтов