从标准输出
问题描述:
错误隐藏输出需要从脚本隐藏错误从标准输出
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
我只需要符合数据库中不存在
答
您需要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)
提示:该消息可能来自您的'db_status = $(...)'行,而不是来自您的'elif [...]'行...... – twalberg