Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problem with return variable in bash

This mysql command line return me: count(*) 19. It's a big problem for me because I just want 19 to make a loop with this number. How can I do?

var = $(echo "select count(*) from shop_tab where catalog <> '';" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop)
like image 772
user420574 Avatar asked May 11 '26 16:05

user420574


2 Answers

An easier way is :

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

Moreover, I'll preconize the use of function in order to easily add options to the MySQL command without having to modifying all your script.

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'")
# ...

I find this more readable too...

like image 144
Arnaud F. Avatar answered May 13 '26 06:05

Arnaud F.


Pipe the result through tail to cut off the header:

... shop | tail -1)
like image 38
Aaron Digulla Avatar answered May 13 '26 06:05

Aaron Digulla