supress a expansão de * no eco

3

Estou trabalhando em um script que executa dinamicamente algumas consultas diariamente. Essas consultas são provenientes de uma tabela no banco de dados.

Aqui está o exemplo de saída da tabela de consulta:

+---------------+-------------------------------+---------+
| query_name    | query                         | userid  |
+---------------+-------------------------------+---------+
| All_User      | select * from users LIMIT 10; | jmatthe |
+---------------+-------------------------------+---------+

Agora, preciso executar a consulta select * from users LIMIT 10; dinamicamente. Eu estou lendo cada linha da saída e armazenando a consulta da saída.

query_name=$(echo $query | cut -d\| -f1)
query_sql=$(echo $query | cut -d\| -f2)
query_user=$(echo $query | cut -d\| -f3)

Agora aqui é onde o problema surge. Como minha linha contém um caractere * , echo $query expande o * para substituí-lo pelos arquivos no diretório atual. Então, basicamente, meu query_sql armazena algo assim.

select batchemail.sh query_output.txt from tbl_query

Eu quero preservar o * na linha para que eu obtenha o mesmo na minha variável query_sql . Eu quero que minha variável query_sql armazene os dados originais.

select * from tbl_query

Alguém pode me orientar sobre isso?

    
por divinedragon 16.04.2013 / 12:56

2 respostas

9

Você o desativa adicionando a seguinte linha ao seu script:

set -o noglob

Como exemplo,

echo *
your files and folders are shown here..
set -o noglob
echo *
*
    
por 16.04.2013 / 13:11
8

Você pode colocá-lo em "":

$ ls
file1  file2  file3  file4  file5  file6  file7  file8  file9
$ Q='select * from table;'
$ echo $Q
select file1 file2 file3 file4 file5 file6 file7 file8 file9 from table;
$ echo "$Q"
select * from table;
    
por 16.04.2013 / 13:20