-
Notifications
You must be signed in to change notification settings - Fork 0
/
macos-update.sh
executable file
·87 lines (60 loc) · 1.61 KB
/
macos-update.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/bash
is_up_to_date() {
softwareupdate --list
}
update_osx() {
#Execute Update
softwareupdate --install --all
}
confirm_update() {
printf "\e[35mExecute ox update? (y/n): \e[m"
read input
if [ ${input} = y ]; then
return 0
fi
return 1
}
check_install_from_application() {
# インストーラー経由でOSXをインストールし始めたバージョン?
local OSX_ELCAPITAN=10.11
target=$OSX_ELCAPITAN | awk -F. '{printf "%2d%02d%02d", $1,$2,$3}'
version=$(sw_vers -productVersion | awk -F. '{printf "%2d%02d%02d", $1,$2,$3}')
if [[ $version -ge $target ]]; then
#Open Installer
# Todo: 動的にできる?
if [ -e /Applications/Install\ macOS\ High\ Sierra.app/ ]; then
open -a /Applications/Install\ macOS\ High\ Sierra.app/
else
sudo reboot
fi
fi
}
# 再起動オプションが使えるかどうか
is_restart_available() {
# macOS10.13.4からsoftwareupdateに再起動オプションが追加
AVAILABLE_VERSION=10.13.4
target=$AVAILABLE_VERSION
version=$(get_current_os_version)
if [[ $version -lt $target ]]; then
echo "no"
fi
echo "yes"
}
# 現在のOSのバージョンを取得
get_current_os_version() {
echo $(sw_vers -productVersion | awk -F. '{printf "%2d%02d%02d", $1,$2,$3}')
#echo to_zero_padding sw_vers -productVersion
}
to_zero_padding() {
echo $("$1"| awk -F. '{printf "%2d%02d%02d", $1,$2,$3}')
}
main() {
is_up_to_date
confirm_update
if [ $? -eq 0 ]; then
update_osx
fi
# Todo: アップデートがなければ実行しないようにする
check_install_from_application
}
main