
Я пытаюсь написать простой скрипт оболочки для OS X 10.10, чтобы установить список приложений для новых Mac, которые мы получаем. Я просто хочу запустить каждый установщик по одному за раз, чтобы установить каждое приложение. Я использую скрипт bash, который отлично работает, за исключением некоторых установок, когда я просто вызываю установщик GUI и устанавливаю таким образом, нажимая Далее, Далее Далее..., потому что это конкретное приложение не установилось должным образом через терминал. (что нормально)
Моя проблема в том, что когда скрипт открывает установщик GUI для приложения A, он затем продолжает запускать скрипт, открывая команды, следующие в строке. Я хочу, чтобы скрипт ждал выполнения следующей команды столько времени, сколько открыто окно установщика. Windows DOS работает таким образом, где вы можете создать пакетный файл, и он не выполнит следующую строку, пока не завершится первая установка. Поэтому я ищу похожее поведение.
Я попробовал пару вещей из прочитанного, но ни одна из них не сработала. Как вы видите, места, где я поместил команду "wait", это те, где я хочу дождаться завершения работы установщика GUI.
#!/bin/bash
# Install Script for OS X BYOD Laptops
# Installing Office 2016
open /Volumes/USB30FD/packages/Microsoft_Office_2016_Volume_Installer.pkg
wait
# sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_Office_2016_Volume_Installer.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_AutoUpdate_3.2.0_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_Excel_15.15.0_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_OneNote_15.15.1_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_Outlook_15.15.0_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_PowerPoint_15.15.0_Updater.pkg -target /
sudo installer -verboseR -pkg /Volumes/USB30FD/packages/Microsoft_Word_15.15.0_Updater.pkg -target /
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/Microsoft Word.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/Microsoft Excel.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/Microsoft PowerPoint.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
defaults write com.apple.dock persistent-apps -array-add '<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/Microsoft Outlook.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>'
killall -HUP Dock
# Install ShareFile\
sudo cp -r /Volumes/USB30FD/apps/ShareFile.app /Applications/
wait
open -a /Applications/ShareFile.app
wait
# Install Absolute Computrace
# sudo installer -verboseR -pkg /Volumes/USB30FD/packages/RPClient.pkg -target /
open /Volumes/USB30FD/packages/RPClient.pkg
wait
open /Volumes/USB30FD/Ctclient103319-304806/ctmweb.app
# Install Symantec Endpoint Protection
# Run the GUI installer instead: open /Volumes/USB30FD/apps/Additional\ Resources/SEP.mpkg
sudo installer -verboseR -pkg /Volumes/USB30FD/apps/Additional\ Resources/SEP.mpkg -target /
wait
/Library/Application\ Support/Symantec/LiveUpdate/LUTool
# Install Trend Disk Encryption
open /Volumes/USB30FD/packages/Trend\ Micro\ Full\ Disk\ Encryption.pkg
Я новичок в написании скриптов оболочки, поэтому чем проще, тем лучше. Спасибо!
решение1
В Mac OS X open
есть опция -W
или --wait-apps
, которая может быть полезна:
% open -h
...
-W, --wait-apps Blocks until the used applications are
closed (even if they were already running).
Хотя я не уверен, в какой версии ОС они это добавили.