Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Shell脚本if条件_Mysql_Linux_Shell - Fatal编程技术网

Mysql Shell脚本if条件

Mysql Shell脚本if条件,mysql,linux,shell,Mysql,Linux,Shell,我正在编写一个运行以下命令的脚本 mysql -u root -e "show databases" 这将显示一个数据库列表 如果此表不包含名为“userdb”的数据库,则应执行以下操作- if [ ... ]; then echo "error" exit fi 如果[…]条件满足,我应该在中写什么?试试这个: usedb=DBname check=`mysql -u root -e "show databases" | grep $userdb` if [ "$check"

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

mysql -u root -e "show databases"
这将显示一个数据库列表

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

if [ ... ]; then
 echo "error"
 exit
fi
如果[…]条件满足,我应该在
中写什么?

试试这个:

usedb=DBname    
check=`mysql -u root -e "show databases" | grep $userdb`
if [ "$check" != "$userdb" ]; then
 echo "error"
exit
fi
但如果数据库名为的行包含任何其他信息,则会出现错误。
尝试使用
regexp
解决此问题。如果表名已列出,则可以使用
grep
进行检查
grep-q
不会在控制台上打印任何内容,但会根据结果设置退出状态(如果
,退出状态将由
检查)


关于正则表达式:“
^
”匹配行首,“
$
”匹配行尾(以避免包含
userdb
,例如
userdb2
)的数据库名称出现误报)

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