0

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

mysql -u root -e "show databases"

这将显示一个数据库列表。

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

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

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

4

2 回答 2

2

您可以检查grep是否列出了表名。grep -q不会向控制台打印任何内容,但会根据结果设置退出状态(退出状态将通过 来检查if)。

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

关于正则表达式: ' ^' 匹配行首, ' ' 匹配行尾(避免数据库名称包含, eg$的误报)userdbuserdb2

于 2012-12-06T06:48:44.860 回答
0

试试这个:

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

但如果与数据库名称的行包含任何其他信息,则会出现错误。尝试解决它regexp

于 2012-12-06T05:59:26.093 回答