我正在编写一个运行以下命令的脚本
mysql -u root -e "show databases"
这将显示一个数据库列表。
如果此表不包含名为“ userdb ”的数据库,则应执行以下操作 -
if [ ... ]; then
echo "error"
exit
fi
我在if [ ... ]
条件下写什么?
您可以检查grep
是否列出了表名。grep -q
不会向控制台打印任何内容,但会根据结果设置退出状态(退出状态将通过 来检查if
)。
if ! mysql -u root -e 'show databases' | grep -q '^userdb$' ; then
echo error
exit
fi
关于正则表达式: ' ^
' 匹配行首, ' ' 匹配行尾(避免数据库名称包含, eg$
的误报)userdb
userdb2
试试这个:
usedb=DBname
check=`mysql -u root -e "show databases" | grep $userdb`
if [ "$check" != "$userdb" ]; then
echo "error"
exit
fi
但如果与数据库名称的行包含任何其他信息,则会出现错误。尝试解决它regexp