我正在尝试编写一个脚本,允许用户select他需要在桌面上执行的操作。 我想检查表是否存在。 如果存在,我会继续其他的事情,否则我退出说表不存在。 我怎么能做到这一点。
if [ $(mysql -N -s -u root -p -e \ "select count(*) from information_schema.tables where \ table_schema='db_name' and table_name='table_name';") -eq 1 ]; then do something else echo "table <table_name> does not exist" exit 1 fi
-N
跳过列名称 -s
用于非表示输出 在MySQL中,你可以在shell中使用-e
mysql -e "desc main_db.clients" > /dev/null 2>&1 echo $?
如果你想要一个不涉及运行mysql客户端并login到mysql服务器的方法,你可以这样做:
if ls -l /var/lib/mysql/database/table.frm 2> /dev/null > /dev/null then echo Table exists else echo Table does not exist fi
您必须在第一行中replace数据目录,数据库名称和表名的path。
注意事项:
由于上述原因,它不像已经提供的其他方法那样可靠,但它避免了mysql客户端,所以它可能仍然是值得的。
请注意,这里介绍的所有方法都依赖于获取自己的权限(文件系统或MySQL)。 如果你弄错了,你很可能会得到一个错误的否定。