Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
通过Bash排除的所有MySQL表_Mysql_Bash_Escaping_Sh - Fatal编程技术网

通过Bash排除的所有MySQL表

通过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

(对不起,我的英语不好)

我想选择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.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,例如??细节很重要。