2016-05-17 145 views
0

错误隐藏输出需要从脚本隐藏错误从标准输出

for s in $s_list; do 
    if [ "${s}" = "test" ]; then 
     db_status=$(mysql -h localhost -P 3306 -u test -ptest -e "show create database test;" | awk {'print $1'} | tail -n 1) 
     db_status_error=$(mysql -h localhost -P 3306 -u test -ptest -e "show create database test;" 2>&1 | awk {'print $1'} | tail -n 1) 
     # echo $db_status_error 
     if [ "$db_status" == "test" ]; then 
      echo "Database exist, need wait..." 
      sleep 2; 
     elif [ "$db_status_error" == "ERROR" ] </dev/null> /dev/null 2>&1 ; then 
      echo "Database does not exist" 
      sleep 2; 
      exit 0 
     fi 
    fi 
done 

结果是

ERROR 1049 (42000) at line 1: Unknown database 'test' 
Database does not exist 

我只需要符合数据库中不存在

+0

提示:该消息可能来自您的'db_status = $(...)'行,而不是来自您的'elif [...]'行...... – twalberg

回答

1

您需要stderr重定向到/dev/null当你设置db_status

db_status=$(mysql -h localhost -P 3306 -u test -ptest -e "show create database test;" 2> /dev/null | awk {'print $1'} | tail -n 1)