概要
ShellScriptをかきかきしていたときに、MySQLの実行結果(今回は数字)をShellの変数に代入して使用したいタイミングがあり、どうやって実現したのか備忘録。
▼こうゆうことをやりたい。
# MySQLを実行して mysql -uroot -e "SELECT SUM(hoge) FROM fuga.table;" # この変数に実行結果を入れたい!! RESULT = MySQL実行結果
解決方法
# MySQLを実行 MYSQLRES=`mysql -uroot -e "SELECT CONCAT('RESULT=', SUM(hoge)) AS 'id0=0' FROM fuga.table;"` # evalで変数に代入 eval `echo $MYSQLRES`
1)まずはMySQLの実行結果を変数 MYSQLRES に代入
MYSQLRES=`mysql -uroot -e "SELECT CONCAT('RESULT=', SUM(hoge)) AS 'id0=0' FROM fuga.table;"`
このときCONCATで"RESULT=代入したい数字"にするのが味噌。
このクエリの実行結果はこんな感じになっているはず。(数字は適当)
id0=0 RESULT=10
こんな方法もある
RESULT=`mysql -uroot -e "SELECT SUM(hoge) FROM fuga.table;" -B | tail -n 1`
普通にこっちの方がスマート。
ちなみにこれは会社の仲間が考えたやつ。
負けた感がすごい。