erro de sintaxe do comando grant próximo a senha no shell script

0

Estou com um problema com scripts de shell.

Já usei o caractere \ antes das aspas duplas (") por algum motivo, como na linha a seguir do meu script de shell.

sql2=\"grant all on \${db_name}.* to \${db_user}@\${host} identified by \${db_pass};\";

Mas, como na sintaxe do comando "grant" do MySQL, eu preciso colocar aspas duplas antes e depois de \${dbpass} , que é a parte da linha de script shell que eu dei acima.Quando eu coloco assim, \"\${dbpass}\" , está jogando erro de sintaxe durante a execução. O que devo precisar para resolver isso?

Este é o script de shell que eu quero executar.

ssh -t [email protected] '
su root -c "
echo \"Give db name :\";
read db_name;
echo \"Give password :\";
read db_pass;
host=localhost;
sql1=\"create database \$db_name;\";
sql2=\"grant all on \${db_name}.* to \${db_name}@\${host} identified by \"\${db_pass}\";\";
sql3=\"\${sql1}\${sql2}\";
echo \"==============\";
mysql -u root -p -e \"\${sql3}\";
";
'

Por favor, consulte este script e por favor me avise as mudanças necessárias que eu preciso fazer com isso.

Obrigado.

    
por Uvais Ibrahim 07.03.2013 / 04:39

1 resposta

0

Você precisa escapar em dobro, cercando o \${db_pass} bit com \\" (essa é a seqüência de escape para \" ).

Assim:

ssh -t [email protected] '
su root -c "
echo \"Give db name :\";
read db_name;
echo \"Give password :\";
read db_pass;
host=localhost;
sql1=\"create database \$db_name;\";
sql2=\"grant all on \${db_name}.* to \${db_name}@\${host} identified by \"\\"\${db_pass}\\"\";\";
sql3=\"\${sql1}\${sql2}\";
echo \"==============\";
mysql -u root -p -e \"\${sql3}\";
";
'
    
por elias 08.03.2013 / 22:12