Essayer de traiter un résultat de 10.12.3 - comment le coder lorsque le système d'exploitation a une troisième valeur numérique optionnelle à considérer? Et, bien sûr, cela change souvent, donc je ne veux pas chercher des mises à jour étendues. Juste le principal OS 10.12, 10.11, 10.10, etc.Faire correspondre le numéro de version de macOS uniquement par numéro de version majeur et mineur
if [ "$osv" = "10.12" ];
then
appi="Applications:App Store.app:Contents:Resources:AppIcon.icns"
elif [ "$osv" = "10.11" ];
then
appi="Applications:App Store.app:Contents:Resources:appStore.icns"
else
exit
fi
merci.
@JamesDean 'awk' prend le contenu de' osv' de $ en tant que son entrée, il se divise en champs (délimiteur spécifié avec '-f'), puis imprime uniquement les deux premiers joints avec le séparateur de champs de sortie spécifié avec 'OFS'. Cette sortie est ensuite enregistrée dans la variable 'v' en utilisant la syntaxe' $ (...) '... – ewcz
@JamesDean ou vous pouvez combiner cette approche avec' sw_vers' et obtenir la version major.minor directement en tant que 'v = $ (sw_vers -productVersion | awk -F. 'BEGIN {OFS = "."} {print $ 1, $ 2}') ' – ewcz
Si le numéro de version est déjà dans une variable shell, c'est un peu lourd, mais si vous appelez 'sw_vers -productVersion' de toute façon, c'est une approche viable, bien que' sw_vers -productVersion | couper -d. -f1-2' est plus simple. (En aparté potentiellement intéressant: l'option '-F' de' awk' s'attend normalement à un _regex_, mais en passant '.' est une exception qui est traitée _literally_ - peut-être parce que la séparation de n'importe quel caractère n'a pas de sens (vous ' d n'obtient jamais que des champs vides).) – mklement0