Intereting Posts
Плимут продолжает уходить Eclipse не запускается без sudo Установка Debian на встроенную систему с последовательной консолью или сетевой консолью (PCH) Есть ли какой-либо инструмент для текстового поиска, предварительно загруженный с помощью известных регулярных выражений? Активировать нажатие, чтобы нажать на сенсорную панель? Удалите самые старые файлы в папке, если общий размер папки превышает 10 ГБ. Опорожнение каталога, принадлежащего другому пользователю в неделю Использование переменных для хранения цветовых кодов терминала для PS1? awk с арифметикой с плавающей запятой – удивительный результат Изменение Chromium автоматически запускает Nautilus с помощью команды Show In Folder Точка с запятой в условных структурах Почему не установлены «нетоги» с установленным битом setuid? Перезапустите скрипт, если он остановился без использования crontab Как манипулировать переменной awk NF в zsh? Не удается загрузить в LUbuntu после настройки RAID

Простой скрипт загрузки / установки (OS X), который может быть лучше

Я новичок в сценариях оболочки (OS X) и решил попробовать свои силы в базовом сценарии, который загружает и устанавливает 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 

Сценарий технически работает, но только из-за sleep 10 я вставил туда, и только потому, что dmg запускается в течение 10 секунд (что не всегда будет иметь место в реальном мире).

Я пытался связать open и cp вместе с && , но это не работает, и я получаю сообщение об ошибке, что / Volumes / Google \ Chrome / Google \ Chrome.app не существует (потому что предыдущая команда не завершено полностью еще).

Я не думаю, что в этом скрипте будет много полезных приложений; опять же, я просто пытаюсь учиться, но мне просто интересно, есть ли лучший способ сделать это.

Спасибо!

Это может быть пересмотрено, чтобы использовать “мы уже там?” проверка здравомыслия, а не спать в течение шестой минуты:

 #!/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 

Однако в случае, если .dmg не удается смонтировать или по какой-либо причине монтируется в другом месте, он будет вращаться до конца времени.

Немного лучше, чем передать это, чтобы open (хотя он просто просит Finder притвориться, что мы дважды щелкнули по файлу), давайте смонтируем его сами:

 #!/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