通过Bash排除的所有MySQL表
(对不起,我的英语不好) 我想选择MySQL数据库中的所有表名,但排除2个表,然后在bash中处理这些数据 但是当我尝试这些代码时,我认为有一种转义问题,是否还有其他可能执行查询并在DBS变量中捕获其输出通过Bash排除的所有MySQL表,mysql,bash,escaping,sh,Mysql,Bash,Escaping,Sh,(对不起,我的英语不好) 我想选择MySQL数据库中的所有表名,但排除2个表,然后在bash中处理这些数据 但是当我尝试这些代码时,我认为有一种转义问题,是否还有其他可能执行查询并在DBS变量中捕获其输出 #/bin/bash MYSQL_USER=root MYSQL_PASS=toor DBS="$(mysql -u$MYSQL_USER -p$MYSQL_PASS -Bse 'SELECT SCHEMA_NAME AS Database FROM INFORMATION_SCHEMA.S
#/bin/bash
MYSQL_USER=root
MYSQL_PASS=toor
DBS="$(mysql -u$MYSQL_USER -p$MYSQL_PASS -Bse 'SELECT SCHEMA_NAME AS Database FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN('mysql', 'information_schema');')"
尝试将SQL字符串存储到它自己的变量中,并将其回显到mysql客户端:
#/bin/bash
MYSQL_USER=root
MYSQL_PASS=toor
SQL_STRING="SELECT SCHEMA_NAME AS db FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'information_schema');"
# Pipe the SQL into mysql
DBS=$(echo $SQL_STRING | mysql -u$MYSQL_USER -p$MYSQL_PASS -Bs)
# Display your result
echo $DBS
注意,我还将
AS Database
更改为AS db
,因为Database
是一个MySQL保留关键字,必须用反引号括起来。我不想在Bash里乱搞那些逃犯。。。。使用不同的别名更容易。不能在单引号字符串中嵌入单引号。尝试:
DBS="$(mysql -u$MYSQL_USER -p$MYSQL_PASS -Bse "SELECT SCHEMA_NAME AS Database FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN('mysql', 'information_schema');")"
“内部”双引号是可以的,因为括号表示一个新的子shell。谢谢,帮助很大。别名在此位置不重要也尝试了该别名,但出现了一些错误's@zirrka,例如??细节很重要。