Simples download / script de instalação (OS X) que poderia ser melhor

0

Sou novo em scripts de shell (OS X) e decidi testar um script básico que baixa e instala o Chrome.

#!/bin/bash -x

cd ~/Downloads
curl -O https://dl.google.com/chrome/mac/stable/CHFA/googlechrome.dmg
open ~/Downloads/googlechrome.dmg && sleep 10
cp -R /Volumes/Google\ Chrome/Google\ Chrome.app /Applications && open 
/Applications/Google\ Chrome.app
diskutil eject Google\ Chrome

O script tecnicamente funciona, mas apenas por causa do sleep 10 que eu coloquei lá, e só porque o dmg acontece em 10 segundos (o que nem sempre é o caso no real) mundo).

Eu tentei vincular open e cp com && , mas isso não funciona e recebo o erro que / Volumes / Google \ Chrome / Google \ Chrome.app não existe (porque o comando anterior ainda não foi totalmente concluído).

Eu não acho que esse script tenha muitos aplicativos úteis; mais uma vez, estou apenas tentando aprender, mas estou apenas imaginando se há uma maneira melhor de fazer isso.

Obrigado!

    
por nuclearsalt 22.06.2018 / 19:13

1 resposta

1

Isso pode ser revisado para usar um "estamos lá ainda?" teste de sanidade em vez de dormir por um sexto de minuto:

#!/bin/bash -x

cd ~/Downloads
curl -O https://dl.google.com/chrome/mac/stable/CHFA/googlechrome.dmg
open ~/Downloads/googlechrome.dmg
while ! [[ -d /Volumes/Google\ Chrome/ ]]; do
   sleep 1
done
cp -R /Volumes/Google\ Chrome/Google\ Chrome.app /Applications && open 
/Applications/Google\ Chrome.app
diskutil eject Google\ Chrome

No entanto, no caso em que o .dmg não seja montado ou, por algum motivo, seja montado em outro local, isso girará suas rodas até o final do tempo.

Um pouco melhor do que entregar isso para open (que apenas pede ao Finder para fingir que clicamos duas vezes no arquivo), vamos montá-lo nós mesmos:

#!/bin/bash -x
cd ~/Downloads
curl -O https://dl.google.com/chrome/mac/stable/CHFA/googlechrome.dmg
set -o pipefail
if mountpoint=$(hdiutil attach googlechrome.dmg | awk 'END { print $1 }'; then
   cp -R /Volumes/Google\ Chrome/Google\ Chrome.app /Applications && open 
   /Applications/Google\ Chrome.app
   hdiutil detach "$mountpoint"
fi
    
por 22.06.2018 / 19:17