Shell脚本如果有条件

时间:2012-12-06 05:48:29

标签: mysql linux shell

我正在编写一个运行以下命令的脚本

mysql -u root -e "show databases"

这将显示数据库列表。

如果此表不包含名称为“ userdb ”的数据库,则应执行以下操作 -

if [ ... ]; then
 echo "error"
 exit
fi

我在 if [ ... ] 条件中写了什么?

2 个答案:

答案 0 :(得分:2)

如果列出了表名,您可以查看grepgrep -q不会向控制台打印任何内容,但会根据结果设置退出状态(然后if将检查退出状态。)

if ! mysql -u root -e 'show databases' | grep -q '^userdb$' ; then
    echo error
    exit
fi

关于正则表达式:'^'匹配行的开头,'$'匹配行的结尾(以避免包含userdb的数据库名称的误报,例如userdb2

答案 1 :(得分:0)

试试这个:

usedb=DBname    
check=`mysql -u root -e "show databases" | grep $userdb`
if [ "$check" != "$userdb" ]; then
 echo "error"
exit
fi

但是如果带有数据库名称的行包含任何其他信息,那么这将是一个错误。 尝试使用regexp

解决此问题