viernes, 24 de febrero de 2017

Expresiones para cadenas

Las siguientes expresiones se usan para evaluar cadenas:

Tabla 27-2: Expresiones para test de cadenas
Expresión Es verdadero si:
cadena cadena no es nula.
-n cadena La longitud de cadena es mayor que cero.
-z cadena La longitud de cadena es cero.
cadena1 = cadena2
cadena1 == cadena2
cadena1 y cadena2 son iguales. Pueden usarse signos igual simples o dobles, pero es preferible usar dobles signos igual.
cadena1 != cadena2 cadena1 y cadena2 no son iguales.
cadena1 > cadena2 cadena1 se ordena después de cadena2.
cadena1 < cadena2 cadena1 se ordena antes de cadena2.

Advertencia: Los operadores de expresión > y < deben ser entrecomillados (o escapados con una barra invertida) cuando se usan con test. Si no se hace esto, serán interpretados por el shell como operadores de redirección, con resultados potencialmente destructivos. Fíjate también que mientras que la documentación bash establece que el ordenado se hace según la secuencia de ordenado de la configuración regional actual, no lo hace así. Se usa el orden ASCII (POSIX) en versiones de bash hasta la 4.0 incluida.

Aquí tenemos un script que incorpora expresiones para cadenas:

#!/bin/bash

# test-string: evaluate the value of a string

ANSWER=maybe

if [ -z "$ANSWER" ]; then
     echo "There is no answer." >&2
     exit 1
fi

if [ "$ANSWER" = "yes" ]; then
     echo "The answer is YES."
elif [ "$ANSWER" = "no" ]; then
     echo "The answer is NO."
elif [ "$ANSWER" = "maybe" ]; then
     echo "The answer is MAYBE."
else
     echo "The answer is UNKNOWN."
fi

En este script, evaluamos la constante ANSWER. Primero determinamos si la cadena está vacía. Si es así, terminamos el script y establecemos el estado de salida a uno. Fíjate la redirección que se aplica al comando echo. Redirige el mensaje de error "No hay respuesta." al error estándar, que es lo "apropiado" que hay que hacer con los mensajes de error. Si la cadena no está vacía, evaluamos el valor de la cadena para ver si es igual a "sí", "no" o "quizás". Hacemos esto usando elif, que es la abreviatura para "else if" (y si no). Usando elif, podemos construir un test lógico más complejo.

No hay comentarios:

Publicar un comentario