간단한 다운로드/설치 스크립트(OS X)가 더 나을 수도 있습니다.

간단한 다운로드/설치 스크립트(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이 존재하지 않는다는 오류가 발생합니다(이전 명령이 아직 완전히 완료되지 않았기 때문에).

나는 이 스크립트가 많은 유용한 응용 프로그램을 가질 것이라고 생각하지 않습니다. 나는 단지 배우려고 노력하고 있지만 이 문제를 해결하는 더 좋은 방법이 있는지 궁금합니다.

감사해요!

답변1

6분의 1 동안 잠을 자는 대신 "아직 도착했나요?"를 사용하도록 수정될 수 있습니다.

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

관련 정보