2011-07-20 132 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'") 
# ... 

我觉得这更可读的太...