ポーリングするいくつかのBashスクリプト用にMySQLに状態テーブルを実装することを考えていました。スクリプト#n-1の実行が終了し、その状態とステータスがMySQLデータベースの状態テーブルに書き込まれると、スクリプト#nが実行可能になります。基本的に、状態テーブルは次のようになります。
+----+-------+--------+
| id | state | status |
+----+-------+--------+
| 44 | 2 | OK |
| 45 | 3 | OK |
| .. | ... | ... |
| 55 | 2 | OK |
+----+-------+--------+
このid
列はauto_increment
、最後の行を定義するために使用できるようになっています。
現時点で私は思いついた:
#!/bin/bash
#...
VARIABLE=$(mysql mydbname --skip-column-names -s --local -e \
"SELECT count(*) \
FROM statetable \
WHERE state=2 AND \
status='OK' AND \
id=(SELECT MAX(id) FROM statetable)")
if [ $VARIABLE -eq 1 ] ; then #...
テーブルの最後の行に、サブクエリなしで目的の状態値とステータスのペア(上記の例では2とOK)があるかどうかを確認し、その情報をBashスクリプトに渡す正しい方法はありますか?
追加されたソリューション:
#!/bin/bash
function check_state () {
VARIABLE=$(mysql mydbname --skip-column-names -s --local -e \
"SELECT (state=2) && (status='OK') \
FROM statetable \
ORDER BY id DESC \
LIMIT 1;")
return $VARIABLE
}
if ! check_state ; then #...