1 votos

Bash no me detecta las comillas simples como texto para una sentencia SQL

Hola buenas, estoy en un proyecto que tengo que conseguir datos de un csv con bash, con esos datos aplicarlos a sentencias sql para enviarlas a un servidor de MySQL, el problema es que cuando pongo la contraseña en la sentencia no me detecta bien las comillas, pero si la contraseña en el csv tiene comillas simples, la sentencia se ejecuta correctamente, pero esa no es la solución correcta, quiero que las comillas simples estén en la sentencia del bash. Nosé si me he explicado bien, aquí adjunto mi código con el fallo:

    #!/bin/bash
    while IFS='#'
    read -r col1 col2
    do
            nombre=${col1}
            echo $pass
            #CREACIÓN BASE DE DATOS
            echo "Creando base de datos bd_"$nombre
            sudo mysql -u root -e "CREATE DATABASE bd_"$nombre
            #CREACIÓN USUARIO
            echo "Creando el usuario "$nombre
            mysql -e "CREATE USER '$nombre'@'%'"
            #ASIGNAR CONTRASEÑA AL USUARIO
            mysql -e "ALTER USER '$nombre'@'%' IDENTIFIED BY '$pass'"
            echo "ALTER USER '$nombre'@'%' IDENTIFIED BY '$pass'"
            #ASIGNAR PRIVILEGIOS A USUARIO
            mysql -e "GRANT ALL PRIVILEGES ON bd_$nombre.* TO '$nombre'@'%'"
            #ACTUALIZAR USUARIO
            mysql -e "FLUSH PRIVILEGES"
    #FINAL BUCLE
    done < csv.csv

(LAS TABULACIONES EN MI SCRIPT ESTAN BIEN, AQUI NOSE SI SE HAN INSERTADO BIEN) En la línea de ALTER USER tengo puesto un echo para ver como se ve la sentencia y se ve tal que asi: 'LTER USER 'lopez'@'%' IDENTIFIED BY 'lopezmoreno

Parece que coja la ultima comilla simple y la pone al principio cambiandola por la A de ALTER.

Llevo una semana con este problema y nose por que, he estado buscando por todos lados y nada.

Muchas gracias y un saludo.

0voto

Karos Oscar Puntos 90

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X