Назад | Перейти на главную страницу

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

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

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

+---------------+-------------------------------+---------+
| 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

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

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

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;