Passing a MySQL "SELECT" query to a shell variable

This question already has an answer here:

  • How to set a variable to the output of a command in Bash? 13 answers

  • Use -s and -N options with mysql command like this.

    sudo mysql -u$mysql_user -p$mysql_pwd -h $mysql_host --database $db_name -e "INSERT INTO service_status_batch VALUES ();"
    batch_id=`sudo mysql -u$mysql_user -p$mysql_pwd -h $mysql_host --database $db_name -s -N -e "SELECT MAX(id) as maxid  FROM service_status_batch;"`
    echo "Value of the id is:" $batch_id
    

    Refer the details for -s and -N :

    --silent, -s
    
       Silent mode. Produce less output. This option can be given multiple
       times to produce less and less output.
    
       This option results in nontabular output format and escaping of
       special characters. Escaping may be disabled by using raw mode; see
       the description for the --raw option.
    
    --skip-column-names, -N
    
       Do not write column names in results.
    

    EDIT3: Bad explanation - I was trying to show how to get the value considering it could be used as necessary:

    sudo echo $(echo "SELECT MAX(id) as maxid  FROM service_status_batch" | mysql dbnamehere -uUser -pPassword)
    

    EDIT1: variable version obviously

    EDIT2: corrected variable assignment by using shellcheck.net as suggested. thanks.

    EDIT3: one last edit to add sudo right before mysql command as it won't work without it for users other than root.

    batch_id=$(echo "SELECT MAX(id) as maxid  FROM service_status_batch" | sudo mysql dbnamehere -uUser -pPassword)
    
    链接地址: http://www.djcxy.com/p/57208.html

    上一篇: 猫通过shell脚本拒绝了权限

    下一篇: 将MySQL“SELECT”查询传递给shell变量