เหมือนบทความ Winget: update script ที่ต้องการ update program ใน mac แต่ก็ไม่อยากไป upgrade ตัว version เล็ก ๆ น้อย ๆ หลักที่ 3 อยากจะอัพเดตเฉพาะ major / minor version
brew_update_major_minor_change.sh ( Download )
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 | #!/bin/bash # Function to compare versions version_compare() { local IFS=. local version1=($1) version2=($2) # Compare major and minor versions only for ((i=0; i<2; i++)); do if [ "${version1[$i]:-0}" -gt "${version2[$i]:-0}" ]; then return 1 elif [ "${version1[$i]:-0}" -lt "${version2[$i]:-0}" ]; then return 2 fi done return 0 } echo "Checking for updates..." # Get list of outdated packages with versions brew outdated --verbose | while read -r line; do if [[ $line =~ (.*)[[:space:]]([0-9]+\.[0-9]+\.[0-9]+).*[[:space:]]([0-9]+\.[0-9]+\.[0-9]+) ]]; then package="${BASH_REMATCH[1]}" current="${BASH_REMATCH[2]}" latest="${BASH_REMATCH[3]}" # Compare versions version_compare "$current" "$latest" result=$? if [ $result -eq 2 ]; then echo "Upgrading $package from $current to $latest" brew upgrade "$package" else echo "Skipping $package (no major/minor version change)" fi fi done echo "Update check complete!" |
- ให้สิทธิ์ในการ run ครั้งแรก โดยคำสั่ง
chmod +x ./brew_update_major_minor_change.sh
- เรียกใช้โดยคำสั่ง
./brew_update_major_minor_change.sh