シェルの中でSELECTを実行して、その結果を取り出すのに
色々試行錯誤した結果、素敵なやり方を思いついたのでメモメモ。
1.SQLを書く
SELECT CONCAT('id=', id) FROM tbl_hogehoge→ 保存。 get_id.sql
ここがミソ。結果をキーバリューの形にするわけです。
2.SQLを実行する
sql=`cat get_id.sql`
res=`mysql -e "$sql" | sed -e "1s/.*$//g"`
これでresの中には「id=XXXXX」が入る
3.evalしちゃう
eval `echo $res`
4.参照できちゃう
echo ${id}→ XXXX
対象のカラムがNULLだったり、空白を含んでるとうまくいかないので
ifnullやquoteを駆使するヨロシ。
さらに、複数のカラムを射影すると・・・
SELECT
CONCAT('id=', id),
CONCAT('name=', name),
CONCAT('attr=', attr)
FROM tbl_hogehoge
たった一行evalするだけで、
eval `echo $res`
${id}も、${name}も${attr}も取れるようになります。
以上です。