Supongamos que quiero comparar la gccversión para ver si el sistema tiene instalada la versión mínima o no.
Para verificar la gccversión, ejecuté lo siguiente
gcc --version | head -n1 | cut -d" " -f4
La salida fue
4.8.5
Entonces, escribí una ifdeclaración simple para comparar esta versión con algún otro valor
if [ "$(gcc --version | head -n1 | cut -d" " -f4)" -lt 5.0.0 ]; then
echo "Less than 5.0.0"
else
echo "Greater than 5.0.0"
fi
Pero arroja un error:
[: integer expression expected: 4.8.5
Comprendí mi error de que estaba usando cadenas para comparar y el -ltentero requerido. Entonces, ¿hay alguna otra forma de comparar las versiones?
shell-script
test
version
numeric-data
Abhimanyu Saharan
fuente
fuente

gcc -dumpversionRespuestas:
No sé si es hermoso, pero está funcionando para todos los formatos de versión que conozco.
( Nota: mejor versión del usuario 'comodín': https://unix.stackexchange.com/users/135943/wildcard , condición adicional eliminada)
fuente
printf "$requiredver\n$currentver"conprintf '%s\n' "$requiredver" "$currentver".-Ves una extensión de GNU, por losort(1)tanto, esta solución no es portátil.sort -nfunciona casi de la misma manera en el caso de las versiones numéricas.Aquí doy una solución para comparar las versiones de Unix Kernel. Y debería funcionar para otros, como gcc. Solo me importa el primer número de versión 2, pero puede agregar otra capa de lógica. Es un trazador de líneas y lo escribí en varias líneas para su comprensión.
Puede modificar esto y usarlo para verificar la versión de gcc.
fuente
Solíamos comprobar muchas versiones en un archivo MAKU de GNU. Destrozamos a través de las instalaciones de archivo. Tuvimos que detectar viejos Binutils y compiladores con errores y solucionarlos sobre la marcha.
El patrón que utilizamos fue:
fuente
Versión más corta:
fuente
printf '%s\n'es lo suficientemente bueno;printfrepetirá la cadena de formato según sea necesario.printfrepite la cadena de formato, pero la sintaxis (¡falta!) Para esto es IMHO oscura; así que uso esto solo cuando es necesario = cuando el número de argumentos es grande o variable.El crédito va a @Shellman
fuente