我正在编写一个运行以下命令的脚本
mysql -u root -e "show databases"
这将显示数据库列表。
如果此表不包含名称为“ userdb ”的数据库,则应执行以下操作 -
if [ ... ]; then
echo "error"
exit
fi
我在 if [ ... ]
条件中写了什么?
答案 0 :(得分:2)
如果列出了表名,您可以查看grep
。 grep -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