2014-01-09 46 views
3

我正在研究一個將查詢mysql的bash腳本。我想添加一些錯誤檢查。假設以下查詢出於某種原因失敗我想捕獲退出錯誤並退出腳本。例如,這是我的腳本的一部分。執行mysql查詢後捕獲退出代碼

QUERY="SELECT DISTINCT `TABLE_SCHEMA`, `TABLE_NAME` 
FROM `information_schema`.`TABLES` 
WHERE table_schema NOT IN ('mysql', 'information_schema', 'performance_schema')"  

mysql -u user -pPASSWD --batch -N -e "$QUERY" | while read DATABASE TABLE; 
do 
    ... 
    ... 
    ... 
done 

如何在腳本運行「$ QUERY」後捕獲退出代碼。我在想這樣的事情。但它似乎並不奏效。

mysql -u user -pPASSWD --batch -N -e "$QUERY" echo $? | while read DATABASE TABLE; 

任何想法

+0

我想你的意思是在'QUERY'中使用單引號,而不是反引號。 – chepner

回答

5

你是好辦法:$?是標誌檢查:

$ mysql -h mydb <<< "SELECT * FROM MyDB.some_table_that_exists;" 
$ echo $? 
0 

$ mysql -h mydb <<< "SELECT * FROM MyDB.asdfasdfasdf;" 
ERROR 1146 (42S02) at line 1: Table 'MyDB.asdfasdfasdf;' doesn't exist 
$ echo $? 
1 

所以你可以做的是執行查詢,然後:

if [ $? ... ]; then ...