
Ich versuche, ein einfaches Shell-Skript für OS X 10.10 zu schreiben, um eine Liste von Anwendungen für die neuen Macs zu installieren, die wir bekommen. Ich möchte einfach jedes Installationsprogramm einzeln starten, um jede Anwendung zu installieren. Ich verwende ein Bash-Skript, das gut funktioniert, außer bei einigen Installationen rufe ich einfach das GUI-Installationsprogramm auf und installiere auf diese Weise, indem ich auf Weiter, Weiter, Weiter ... klicke, weil diese bestimmte App nicht richtig über das Terminal installiert wurde. (was in Ordnung ist)
Mein Problem ist, dass das Skript, wenn es das GUI-Installationsprogramm für App A öffnet, das Skript weiter ausführt und die nächsten Befehle öffnet. Ich möchte, dass das Skript mit der Ausführung des nächsten Befehls so lange wartet, wie das Installationsfenster geöffnet ist. Windows DOS funktioniert auf diese Weise, wo Sie eine Batchdatei erstellen können und die nächste Zeile erst ausgeführt wird, wenn die erste Installation abgeschlossen ist. Ich suche also nach einem ähnlichen Verhalten.
Ich habe ein paar Dinge aus dem, was ich gelesen habe, ausprobiert, aber nichts davon hat funktioniert. Wie Sie sehen, möchte ich an den Stellen, an denen ich den Befehl „wait“ eingefügt habe, warten, bis das GUI-Installationsprogramm fertig ist.
#!/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
Ich bin ein ziemlicher Neuling, was Shell-Skripte angeht, also gilt: je einfacher, desto besser. Danke!
Antwort1
Unter Mac OS X open
gibt es eine -W
oder --wait-apps
Option, die relevant sein könnte:
% open -h
...
-W, --wait-apps Blocks until the used applications are
closed (even if they were already running).
Ich bin mir jedoch nicht sicher, bei welcher Betriebssystemversion sie das hinzugefügt haben.