Problema na execução do mysql com argumentos do próprio script

1

Eu instalei o Xubuntu 16.04 e o servidor mysql 5.7.

Eu criei um script simples com o nome mysql-wrapper :

#!/bin/bash
mysql -u myuser -pmypwd mydatabase --table $*

Agora eu executo o comando e ele executa com êxito:

mysql-wrapper -e "STATUS"

Então eu tento executar o próximo comando (com espaço):

mysql-wrapper -e "SHOW TABLES"

Eu recebo problema: mysql print me help para comandos, como executo mysql com comando ilegal.

Como posso resolver o meu problema? Ou pode ser melhor usar alias?

    
por Yura Shinkarev 27.10.2016 / 08:57

1 resposta

2

No uso comum, você não deve ter nenhum motivo para usar um $* simples. Você deve sempre estar usando "$@" (observe que as aspas estão incluídas):

#!/bin/bash
mysql -u myuser -pmypwd mydatabase --table "$@"

Somente com "$@" seus argumentos de script serão passados como estão para o comando, isso é seguro para a divisão de campos e globbing.

Para ver a diferença, execute um script que contenha

#!/bin/bash
printf "%s\n" $*
printf "%s\n" $@
printf "%s\n" "$*"
printf "%s\n" "$@"

com vários argumentos.

    
por muru 27.10.2016 / 09:20