Подавить расширение * в эхо

Я работаю над сценарием, который динамически выполняет некоторые запросы ежедневно. Эти запросы поступают из таблицы в базе данных.

Вот пример вывода таблицы запросов:

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

Теперь я должен выполнить запрос select * from users LIMIT 10; динамически. Я читаю каждую строку вывода и сохраняю запрос из вывода.

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

Теперь здесь возникает проблема. Потому что моя строка содержит * характер в этом, echo $query расширяет * заменить его файлами в текущем каталоге. Так что в основном мой query_sql хранит что-то вроде этого.

select batchemail.sh query_output.txt from tbl_query

Я хочу сохранить * в линии, чтобы я получил то же самое в моем query_sql переменная. Я хочу мое query_sql переменная для хранения исходных данных.

select * from tbl_query

Кто-нибудь может направить меня в этом?

2 ответа

Решение

Вы отключите его, добавив следующую строку в ваш скрипт:

set -o noglob

В качестве примера,

echo *
your files and folders are shown here..
set -o noglob
echo *
*

Вы можете поместить это в "":

$ 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;
Другие вопросы по тегам