是否可以在bash脚本中检查是否存在mysql数据库.根据结果,然后执行另一个操作或终止脚本?
Bil*_*win 39
我给+1 回答@chown,但这是另一种选择:如果bash脚本在本地运行MySQL实例,并且你知道datadir的路径,你可以测试:
if [ -d /var/lib/mysql/databasename ] ; then
# Do Stuff ...
fi
Run Code Online (Sandbox Code Playgroud)
这也假设运行脚本的shell用户具有文件系统级权限来读取MySQL datadir的内容.情况往往如此,但尚不确定.
cho*_*own 30
示例脚本(感谢Bill Karwin的评论--user和--password评论!):
#!/bin/bash
## --user=XXXXXX --password=XXXXXX *may* not be necessary if run as root or you have unsecured DBs but
## using them makes this script a lot more portable. Thanks @billkarwin
RESULT=`mysqlshow --user=XXXXXX --password=XXXXXX myDatabase| grep -v Wildcard | grep -o myDatabase`
if [ "$RESULT" == "myDatabase" ]; then
echo YES
fi
Run Code Online (Sandbox Code Playgroud)
这些是在提示符下运行时命令的样子:
[root@host ~]# mysqlshow myDatabase
Wildcard: myDatabase
+------------------+
| Databases |
+------------------+
| myDatabase |
+------------------+
Run Code Online (Sandbox Code Playgroud)
如果不存在DB,则输出将如下所示:
[root@host ~]# mysqlshow myDatabase
Wildcard: myDatabase
+-----------+
| Databases |
+-----------+
+-----------+
Run Code Online (Sandbox Code Playgroud)
然后,解析输出并根据它是否存在执行您需要的操作!
mat*_*tes 19
mysqlshow "test" > /dev/null 2>&1 && echo "Database exists."
Run Code Online (Sandbox Code Playgroud)
根据mysqlshow命令的退出状态,它将执行以下echo.
使用命令-e的选项mysql。它可以让您执行任何查询(假设有正确的凭据)。
这可能是一个例子:
if mysql "DATABASE_NAME" -e exit > /dev/null 2>&1; then
echo "Exists"
else
echo "Not exists"
fi
Run Code Online (Sandbox Code Playgroud)
我无法让接受的答案为我工作(grep在引号中没有用),所以这是我的版本:
RESULT=`mysql -u $USER -p$PASSWORD --skip-column-names -e "SHOW DATABASES LIKE 'myDatabase'"`
if [ "$RESULT" == "myDatabase" ]; then
echo "Database exist"
else
echo "Database does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
我使用该选项--skip-column-names从结果中删除列名称.
这是一个替代版本:
RESULT=`mysql -u$USER -p$PASSWORD -e "SHOW DATABASES" | grep $DATABASE`
if [ "$RESULT" == "$DATABASE" ]; then
echo "Database exist"
else
echo "Database does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
如果有一个名为DB abcd且我们-Fo在此grep之后使用DB a/ ab/ abc的搜索结果,脚本将显示结果Database exist.
| 归档时间: |
|
| 查看次数: |
39290 次 |
| 最近记录: |