GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo detectar Bash> =4.0?

Estoy escribiendo un script que usa read -i , por lo que requiere Bash 4.0 o posterior.

Desafortunadamente, a partir de principios de 2020, macOS todavía viene con Bash 3.x, y muchos usuarios de mi script usarán Mac. Dado que Apple cambió el shell predeterminado a zsh, no tengo esperanzas de que actualicen la versión incluida.

Como tal, quiero que mi secuencia de comandos detecte si Bash es lo suficientemente nuevo y salga con un útil mensaje de error que indique al usuario que actualice.

Sé que puedo comparar ${BASH_VERSION} , pero esa es una cadena con un formato no numérico y potencialmente poco confiable. Se siente frágil hacer suposiciones al respecto.

¿Cuál es la mejor manera de lograr esto?

requireBash4() {
  if <something here>; then
    >&2 echo "Bash 4.0 or newer is required."
    >&2 echo "Once you're upgraded, re-run this script."
    exit 1
  fi
}

Respuesta aceptada:

if ((BASH_VERSINFO >= 4)); then ...

Observe que BASH_VERSINFO es una matriz. Al igual que con cualquier matriz en bash, usarla como una variable simple se refiere a su elemento 0-ésimo. También puede usar ((BASH_VERSINFO[0] >= 4)) si lo encuentras más claro.

Y sí, esta variable y sintaxis son compatibles desde al menos bash 2.0.

BASH_VERSINFO

Una variable de matriz de solo lectura cuyos miembros contienen información de versión
para esta instancia de bash. Los valores asignados a los miembros de la matriz
son los siguientes:

BASH_VERSINFO[0] El número de versión principal (el lanzamiento).
BASH_VERSINFO[1] El número de versión secundaria (la versión).
BASH_VERSINFO[2] El nivel del parche.
BASH_VERSINFO[3] La versión de compilación.
BASH_VERSINFO[4] El estado de lanzamiento (por ejemplo, beta1).
BASH_VERSINFO[5] El valor de MACHTYPE .


Linux
  1. Cómo usar los comandos del historial de Bash

  2. Cómo escribir un bucle en Bash

  3. Cómo verificar la versión de Redhat

  4. ¿Cómo depurar un script Bash?

  5. Cómo comprobar la versión de CentOS

Cómo comprobar la versión de CentOS

Cómo comprobar la versión de Ubuntu

Cómo comprobar la versión de Python

Cómo comprobar la versión de Java

¿Cómo comprobar la versión de OpenGL?

Cómo ejecutar un script Bash