scripts script resueltos programacion pasar parametros manejo español ejercicios ejemplos comandos cadenas bash shell freebsd

bash - programacion - scripts linux ejercicios resueltos



Compruebe si la cadena no está vacía ni espacio en el script de shell (6)

Estoy tratando de ejecutar el siguiente script de shell que se supone que comprueba si una cadena no está vacía ni vacía. Sin embargo, estoy obteniendo el mismo resultado para todas las 3 cadenas mencionadas. He intentado usar la sintaxis "[[" también, pero sin éxito.

Aquí está mi código:

str="Hello World" str2=" " str3="" if [ ! -z "$str" -a "$str"!=" " ]; then echo "Str is not null or space" fi if [ ! -z "$str2" -a "$str2"!=" " ]; then echo "Str2 is not null or space" fi if [ ! -z "$str3" -a "$str3"!=" " ]; then echo "Str3 is not null or space" fi

Estoy obteniendo el siguiente resultado:

# ./checkCond.sh Str is not null or space Str2 is not null or space


En caso de que necesite comparar con cualquier cantidad de espacios en blanco, no solo con un solo espacio, puede hacer esto:

Para eliminar la cadena de espacio en blanco adicional (también condences espacios en blanco en el medio a un espacio):

trimmed=`echo -- $original`

El -- asegura que si $original contiene interruptores entendidos por eco, aún serán considerados como argumentos normales para ser repetidos. También es importante no colocar "" alrededor de $original , o los espacios no se eliminarán.

Después de eso, puedes verificar si $trimmed está vacío.

[ -z "$trimmed" ] && echo "empty!"


Necesita un espacio a cada lado de la != . Cambie su código a:

str="Hello World" str2=" " str3="" if [ ! -z "$str" -a "$str" != " " ]; then echo "Str is not null or space" fi if [ ! -z "$str2" -a "$str2" != " " ]; then echo "Str2 is not null or space" fi if [ ! -z "$str3" -a "$str3" != " " ]; then echo "Str3 is not null or space" fi


Otra prueba rápida para que una cuerda tenga algo dentro, pero espacio.

if [[ -n "${str// /}" ]]; then echo "It is not empty!" fi

"-n" significa cadena de longitud distinta de cero.

Luego, las dos primeras barras diagonales coinciden con todas las siguientes, en nuestro (s) espacio (s) de caso. Luego se sigue la tercera barra con la cadena de reemplazo (vacía) y se cierra con "}". Observe la diferencia con la sintaxis de expresión regular habitual.

Puede leer más sobre la manipulación de cadenas en las secuencias de comandos de shell bash aquí .


Para comprobar la cadena vacía en shell

if [ "$str" == "" ];then echo NULL fi

O

if [ ! "$str" ];then echo NULL fi


Para verificar si una cadena está vacía o solo contiene espacios en blanco, puede usar:

shopt -s extglob # more powerful pattern matching if [ -n "${str##+([[:space:]])}" ]; then echo ''$str is not null or space'' fi

Consulte Expansión de parámetros de shell y Coincidencia de patrones en el Manual de Bash.


[ $(echo $variable_to_test | sed s//n// | sed s// //) == "" ] && echo "String is empty"

Eliminar todas las nuevas líneas y espacios de la cadena causará que el espacio en blanco se reduzca a nada, lo que se puede probar y aplicar