Je suis en train d'écrire un shell script que je veux théoriquement compatible avec de très anciennes versions de Mac OS X (je dis "théoriquement", parce que je manque de machines super anciennes avec lesquelles faire des tests). Le script utilise la sortie de ${OSTYPE:6}
pour déterminer sur quelle version de Mac OS X il fonctionne.
Sur une machine exécutant 10.13 High Sierra, echo ${OSTYPE:6}
renvoie à 17
. Sur une machine exécutant la version 10.10 Yosemite, le résultat est le suivant 14
. La logique veut donc que la commande émette "15" le 10.11 et "16" le 10.12.
(C'est utile, car cela me permet d'inclure des lignes comme if [[ ${OSTYPE:6} -ge 14 ]]; then DoThing; fi
à exécuter DoThing
sur tout système exécutant Yosemite et plus récent).
Ce schéma s'applique-t-il également aux anciennes versions ? Par exemple, la commande renverrait-elle "4" sur la version originale 10.0 ?
Je pose la question parce que, eh bien, il serait étrange de commencer à 4, donc je crains que quelque part dans l'histoire, le nombre ait été incrémenté par une mise à jour du point.
1 votes
Pour certaines versions plus anciennes, il renvoie une paire de chiffres en pointillés. Sous OS X 10.6.8 j'obtiens "10.0", et sous OS X 10.3.9 j'obtiens "7.0". Malheureusement, cela signifie que
bash
On ne peut pas faire de comparaisons numériques dans ces versions.0 votes
@GordonDavisson Ugh, merci pour l'info ! J'ai maintenant fait le contrôle d'une manière beaucoup moins propre.
if (( $(echo "${OSTYPE:6} > 13" | bc -l) )); then DoThing; fi