Dávám +1 odpovědi @chown, ale tady je další alternativa:Pokud bash skript běží lokálně s instancí MySQL a znáte cestu k datadir, můžete otestovat:
if [ -d /var/lib/mysql/databasename ] ; then
# Do Stuff ...
fi
To také předpokládá, že váš uživatel shellu spouštějící skript má oprávnění na úrovni souborového systému číst obsah datadir MySQL. To je často případ, ale není to jisté.
mysqlshow "test" > /dev/null 2>&1 && echo "Database exists."
V závislosti na stavu ukončení příkazu mysqlshow provede následující echo.
Příklad skriptu (Díky Billu Karwinovi za --user
a --password
komentář!):
#!/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
Takto vypadají příkazy při spuštění na výzvu:
[[email protected] ~]# mysqlshow myDatabase
Wildcard: myDatabase
+------------------+
| Databases |
+------------------+
| myDatabase |
+------------------+
Pokud žádná DB neexistuje, výstup bude vypadat takto:
[[email protected] ~]# mysqlshow myDatabase
Wildcard: myDatabase
+-----------+
| Databases |
+-----------+
+-----------+
Poté analyzujte výstup a udělejte to, co potřebujete, na základě toho, zda existuje nebo ne!
Jak zadat více mezer pro oddělovač pomocí řezu?
Skript Bash vypíše příkaz Nenalezen na prázdné řádky