Estoy escribiendo un shell script que quiero que sea teóricamente compatible con versiones muy antiguas de Mac OS X (digo "teóricamente", porque me faltan máquinas superantiguas con las que hacer pruebas). El script utiliza la salida de ${OSTYPE:6}
para determinar en qué versión de Mac OS X se está ejecutando.
En una máquina con 10.13 High Sierra, echo ${OSTYPE:6}
devuelve 17
. En una máquina con 10.10 Yosemite, devuelve 14
. La lógica sugiere, por tanto, que el comando emitiría "15" en 10.11 y "16" en 10.12.
(Esto es útil, porque me permite incluir líneas como if [[ ${OSTYPE:6} -ge 14 ]]; then DoThing; fi
para correr DoThing
en cualquier sistema que ejecute Yosemite y más reciente).
¿Esta pauta se aplica también a las versiones antiguas? Por ejemplo, ¿el comando devolvería "4" en la 10.0 original?
Lo pregunto porque, bueno, sería raro empezar en 4, así que me preocupa que en algún momento de la historia, el número se haya incrementado por una actualización de puntos.
1 votos
En algunas versiones antiguas, devuelve un par de números con puntos. En OS X 10.6.8 obtengo "10.0", y en OS X 10.3.9 obtengo "7.0". Lamentablemente, eso significa que
bash
no puede realizar comparaciones numéricas en estas versiones.0 votos
@GordonDavisson ¡Uf, gracias por el aviso! Ahora he hecho la comprobación mucho menos limpia
if (( $(echo "${OSTYPE:6} > 13" | bc -l) )); then DoThing; fi