2015-10-31 85 views
1

我有以下bash腳本:猛砸檢查如果MySQL命令失敗,

MYSQL="which mysql" 
SQL="CREATE DATABASE IF NOT EXISTS TEST;" 

read -p -s "Enter mySQL password:" DBPASS 

$MYSQL -root -p$DBPASS -e "$SQL" 
if [ "$?" -eq 0 ]; 
then 
    echo "Failed." 
else 
    echo "Done." 
fi 

即使我輸入密碼錯誤的腳本說"Done.",因爲它不容檢測mysql命令錯誤...

我需要能夠在有人輸入錯誤密碼時正確顯示"Error."消息。

幫助讚賞。

+0

也許使用'expect' - http://expect.sourceforge.net/ - 會是一個更好的選擇 –

+1

更換'MYSQL = 「MySQL的哪些」''用MYSQL =」 $(其中mysql)「'。 – Cyrus

+0

'$(其中mysql)'沒有解決問題... – Mendes

回答

5

$? == 0表示命令成功運行。

試試這個:

MYSQL="which mysql" 
SQL="CREATE DATABASE IF NOT EXISTS TEST;" 

read -p -s "Enter mySQL password:" DBPASS 

$MYSQL -root -p$DBPASS -e "$SQL" 
if [ "$?" -eq 0 ]; 
then 
    echo "Done." 
else 
    echo "Failed." 
fi 
+0

這不能工作。 MYSQL =「哪個mysql」dosent工作! –

+0

use: 'export phppath = $(which php) echo $ phppath'並在'echo'前添加一個換行符 – Hafenkranich