Mysql

抑制 * 在 echo 中的擴展

  • April 16, 2013

我正在編寫一個每天動態執行一些查詢的腳本。這些查詢來自數據庫中的一個表。

這是查詢表的範例輸出:

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

引用自:https://serverfault.com/questions/499776