Вопрос по сценарию

Вопрос по сценарию

Я пытаюсь написать простой скрипт оболочки для 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).

Хотя я не уверен, в какой версии ОС они это добавили.

Связанный контент