У меня возникают проблемы при попытке выяснить, как я могу перебрать массив, который я использую для заполнения меток для кнопок диалогового окна AppleScript.
В настоящее время у меня есть массив из 13 объектов, которыеотделы для нашего экземпляра jamf.Диалоговое окно AppleScript имеет максимум 3 кнопки, которые вы можете назначить.Поэтому я пытаюсь выполнить итерацию по моему массиву, чтобы показать 2 варианта за раз, а третья кнопка - «Далее», чтобы перейти к следующим 2 параметрам и т. Д.
Я также хочу рассмотреть ситуацию дляесли пользователь должен пройти весь путь до последней опции, он соответствующим образом настраивает кнопки, например, оставляя последнее диалоговое окно, чтобы иметь 1 или 2 кнопки, если это количество оставленных опций.
У меня естьустановите массив с 13 элементами, затем попытайтесь выполнить цикл while с вложенным оператором if, чтобы проверить, есть ли 1 или 2 оставшиеся опции и удалить дополнительные кнопки.
departments=("Accounting" "Compliance" "Data Science" "DevOps" "Engineering" "Executive Team" "Human Resources" "Marketing" "Member Experience" "Member Experience Managers" "Product" "QA" "Risk" "Not Listed")
departmentsCount=${#departments[@]}
i=0
dpt=""
while [ "$dpt" != "Not Listed" ]
do
if [[ $((departmentsCount - $i)) -eq 0 ]]; then
a=$i
dpt=$(osascript -e 'Tell application "System Events" to display dialog "Please select your Department:" buttons {"'"${departments[$a]}"'"} default button 1' 2>/dev/null | sed 's/button returned://')
i=$i+2
elif [[ $((departmentsCount - $i)) -eq 1 ]]; then
a=$i
b=$(i+1)
dpt=$(osascript -e 'Tell application "System Events" to display dialog "Please select your Department:" buttons {"'"${departments[$a]}"'", "'"${departments[$b]}"'"} default button 2' 2>/dev/null | sed 's/button returned://')
echo "$dpt"
i=$i+2
else
a=$i
b=$i+1
dpt=$(osascript -e 'Tell application "System Events" to display dialog "Please select your Department:" buttons {"'"${departments[$a]}"'", "'"${departments[$b]}"'", "Next"} default button 3' 2>/dev/null | sed 's/button returned://')
i=$i+2
fi
done
Прямо сейчас яЯ получаю бесконечный цикл, так как $ dpt никогда не устанавливается в Other.Я не понял, как можно заставить цикл завершиться, если выбрано что-то отличное от Next.Может быть, мне нужно изменить тип цикла, который я использую, или как я использую свои переменные.