Подавить расширение * в эхо
Я работаю над сценарием, который динамически выполняет некоторые запросы ежедневно. Эти запросы поступают из таблицы в базе данных.
Вот пример вывода таблицы запросов:
+---------------+-------------------------------+---------+
| 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;