Chequeo de comparación Bash para aceptar valores solo con formato 0.1.
Tengo este fragmento de código:
if [[ $1 =~ ^[+-]?[0-9]+\.?[0-9]*$ ]]; then
echo 'versión es buena'
exit 0
else
exit 1
fi
El problema es que este fragmento de código $1 =~ ^[+-]?[0-9]+\.?[0-9]*$
solo debería validar versiones formateadas como number.number
.
Actualmente, esta porción de código valida las entradas como:
1
01
0.1
¿Existe alguna manera de hacer que el código solo acepte entradas formateadas como 0.1 / 0.3.2 / 0.1.141
, etc.?
Gracias de antemano.
EDITAR:
Para aclarar esta pregunta, el código solo debería aceptar números separados con puntos, como la versión de un programa de software.
davy.ai
Sí, hay una manera de modificar la expresión regular en el código para solo aceptar entradas con formato “número.número.número”. Aquí está el código modificado:
Aquí hay una breve explicación de los cambios:
(\.[0-9]+){2}$
– Esta parte de la expresión regular asegura que hay dos puntos seguidos de al menos un dígito después de cada punto. El{2}
especifica que este patrón debe ocurrir dos veces (ya que queremos números de versión en forma de “x.y.z”).\.?
de la expresión regular original para evitar que acepte números de un solo dígito.Con estos cambios, el código debería aceptar solo entradas con formato “número.número.número”.