Scripting Question

1

Estou tentando escrever um script de shell simples para o OS X 10.10, para instalar uma lista de aplicativos para novos Macs em que estamos entrando. Eu só quero disparar cada instalador um de cada vez para instalar cada aplicativo. Eu estou usando um script bash, que funciona bem, exceto por algumas instalações que eu estou chamando o instalador GUI e instalando dessa forma clicando em Next, Next Next ... porque esse aplicativo em particular não instalou corretamente através do terminal. (o que é bom)

Meu problema é que, quando o script abre o instalador da GUI para o Aplicativo A, ele continuará executando o script abrindo os comandos na próxima linha. O que eu quero é que o script aguarde para executar o próximo comando enquanto a janela do instalador estiver aberta. O Windows DOS funciona dessa maneira, onde você pode criar um arquivo em lotes e não executará a próxima linha até que a primeira instalação seja concluída. Então, estou procurando um comportamento semelhante.

Eu tentei algumas coisas da leitura, mas nenhuma delas funcionou. Como você pode ver, os lugares onde coloquei o comando "wait" é onde eu quero aguardar o término do instalador da 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

Sou bastante novato quando se trata de scripts de shell, então quanto mais simples melhor. Obrigado!

    
por Fish 05.11.2015 / 23:44

1 resposta

2

O Mac OS X open tem uma opção -W ou --wait-apps que pode ser relevante:

% open -h
...
      -W, --wait-apps   Blocks until the used applications are
                        closed (even if they were already running).

Não tenho certeza de qual versão do SO eles adicionaram, no entanto.

    
por 06.11.2015 / 00:12

Tags