2011-07-20 131 views
0

我從bash連接到我的數據庫。我做了一個數組的選擇計數,我想把變量中的返回值存儲起來。我怎樣才能做到這一點?在Bash中聲明變量?

我所做的:

var=`"select count(*) from shop_tab where catalog <> ''" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop` 

請求返回了號碼,但沒有股票進入變量。

謝謝!

編輯:它可以使用此命令行:

myvar = $(echo "select count(*) from shop_tab where catalog <> '';" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop) 
+0

你怎麼知道它是不是在變? – Jacob

+0

運行此命令後,'var'的內容是什麼? ('echo $ var') – carlpett

+0

是的,我沒有迴應$ var,沒有任何東西,空白。 – user420574

回答

1

我想你忘記了在管道的echo?就像這樣:

var=`echo "select count(*) from shop_tab where catalog <> ''" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop` 
+1

斑點!還有一個理由是不使用任何管道,而是使用'mysql -e'。 –

4

一個更簡單的方法是:

var=$(mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe --batch --skip-column-names -Dshop -e "select count(*) from shop_tab where catalog <> ''") 

此外,我會preconize爲了方便地添加選項,MySQL命令,而無需修改所有腳本的使用功能。

function MysqlQuery() { 
    mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe --batch --skip-column-names -D "$1" -e "$2"; 
} 

va=$(MysqlQuery Shop "SELECT COUNT(*) FROM shop_tab WHERE catalog <> ''") 
vaABC=$(MysqlQuery Shop "SELECT COUNT(*) FROM shop_tab WHERE catalog <> 'abc'") 
vadef=$(MysqlQuery Shop "SELECT COUNT(*) FROM shop_tab WHERE catalog <> 'def'") 
# ... 

我覺得這更可讀的太...