¿Cuál es el significado de [[: space:]] en bash?

Pregunta:

Acabo de encontrarme con un guión bash. ¿Qué significa [[:space:]] en un script bash? ¿Por qué el doble colon?

Respuesta:

De hecho, está en el manual de bash, pero ayuda a saber lo que está buscando, lo cual no es útil si no sabe lo que está mirando. Si buscaste [[ te distraerías con la sección de expresión condicional [[ expression ]] . Además, al buscar :space: aparece dos ejemplos en la misma sección. Puede seguir la ruta de navegación en ese ejemplo:

Por ejemplo, lo siguiente coincidirá con una línea (almacenada en la línea de la variable de shell) si hay una secuencia de caracteres en el valor que consta de cualquier número, incluido el cero, de espacios, cero o una instancia de 'a', luego una 'B':

 [[ $line =~ [[:space:]]*?(a)b ]]

… a partir de lo cual podría reconstruir que la parte [[:space:]] correspondía a "caracteres de espacio", pero se le podría perdonar que piense que es solo un carácter de espacio literal y no una clase completa de caracteres, lo cual es lo que representa.

Si (¿le ocurre?) Busca la cadena " space" (es decir, un espacio seguido de la palabra "espacio") en el manual de bash en línea , hay "sólo" unas 32 coincidencias por recorrer. Aproximadamente el décimo estará aquí:

Dentro de '[' y ']', las clases de caracteres se pueden especificar usando la sintaxis [: clase:], donde clase es una de las siguientes clases definidas en el estándar POSIX:

 alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit

Una clase de personaje coincide con cualquier personaje que pertenezca a esa clase.

Lo que lo llevaría al estándar POSIX, donde podría buscar el término "clase de carácter" y encontrar

wctype, wctype_l – define la clase de carácter , lo que te lleva tan lejos como:

Las funciones wctype () [CX] [Option Start] y wctype_l () [Option End] determinarán los valores de wctype_t de acuerdo con las reglas del conjunto de caracteres codificados definido por la información del tipo de carácter en la configuración regional actual [CX] [Option Start] o en la configuración regional representada por locale, [Option End] respectivamente (categoría LC_CTYPE).

Si luego siguió el enlacesetlocale , finalmente llegaría a su respuesta real, en la sección Locale :

espacio

Defina los caracteres para clasificarlos como caracteres de espacio en blanco. En la configuración regional POSIX, se incluirán exactamente <space>, <form-feed>, <newline>, <carriage-return>, <tab>, and <vertical-tab> .

En un archivo de definición de configuración regional, no se especificará ningún carácter para las palabras clave superior, inferior, alfa, dígito, gráfico o xdigit. El <space>, <form-feed>, <newline>, <carriage-return>, <tab>, and <vertical-tab> del conjunto de caracteres portátiles, y cualquier carácter incluido en el espacio en blanco de la clase se incluye automáticamente en este clase.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım