Problem with return variable in bash

前端 未结 3 1215
闹比i
闹比i 2020-12-11 22:12

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

相关标签:
3条回答
  • 2020-12-11 22:30

    You can use awk or cut to get second value.

    awk

    var = $(echo "select count(*) from shop_tab where catalog <> '';" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop | awk '{ print $2 }')
    

    cut

    var = $(echo "select count(*) from shop_tab where catalog <> '';" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop | cut -d' ' -f2)
    
    0 讨论(0)
  • 2020-12-11 22:39

    Pipe the result through tail to cut off the header:

    ... shop | tail -1)
    
    0 讨论(0)
  • 2020-12-11 22:48

    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...

    0 讨论(0)
提交回复
热议问题