El siguiente está funcionando como se esperaba.

for schema in `mysql -e"show databases"`
do
if [[ $schema = 'test' ]];then
echo $schema
fi
done

Pero cuando tengo que seleccionar todos los valores de comenzar con la prueba, la siguiente no funciona por razones obvias…

if [[ $schema = 'test%' ]];then

Quiero seleccionar otros valores como test_db, test123 etc.

InformationsquelleAutor shantanuo | 2012-03-26

4 Comentarios

  1. 2

    Que puede utilizar comodines (expresiones regulares) en bash:

    pax> if [[ test123 =~ ^test.* ]] ; then echo yes ;fi
    yes

    De la bash manual:

    Adicionales operador binario, =~, está disponible, con la misma prioridad que == y !=. Cuando se utiliza, la cadena a la derecha del operador es considerada una de expresiones regulares extendidas y coincidentes en consecuencia (como en la expresión(3)).

    El valor de retorno es 0 si la cadena coincide con el patrón, y 1 en caso contrario. Si la expresión regular es sintácticamente incorrecta, la expresión condicional del valor de retorno es de 2.

    Si el shell opción nocasematch está habilitado, el partido se realiza sin tener en cuenta el caso de los caracteres alfabéticos. Cualquier parte del patrón puede ser citado a la fuerza para ser emparejados como una cadena.

    Subcadenas coincidentes por entre paréntesis las sub‐expresiones dentro de la expresión regular se guardan en la variable de matriz BASH_REMATCH. El elemento de BASH_REMATCH con el índice 0 es la parte de la cadena de coincidencia de la totalidad de la expresión regular. El elemento de BASH_REMATCH con índice n es la parte de la cadena de coincidencia de la enésima entre paréntesis la subexpresión.

Dejar respuesta

Please enter your comment!
Please enter your name here