Skriptfrage

Skriptfrage

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 opengibt es eine -Woder --wait-appsOption, 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.

verwandte Informationen