您的位置:首页 > 数据库 > MySQL

如何将MySQL help contents的内容有层次的输出

2016-03-22 17:05 585 查看
经常会遇到这种情况,在一个不能上网的环境通过MySQL客户端登录数据库,想执行一个操作,却忘了操作的具体语法,各种不方便。

其实,MySQL数据库内置了帮助文档,通过help contents即可查看。

如下所示:



可见,该文档涵盖了数据库操作的大部分主题。

文档分为以上几大类,每个大类又包括更小粒度的类,类最后有具体的topic组成。

那么这之间的层级关系如何呢?

昨天想执行一个操作

mysql> backup table emp to '/tmp/mysqlbackup';

因为这个backup操作以前没有使用过,准备用MySQL自带的帮助文档来查看具体的用法。本来这个命令所属的类别就有点模糊,譬如Administration和Utility都有可能。最后找了一通,还是没有找到。

想了想,这样查看帮助文档确实没有太大的效率,如果知道这之间的层级关系就好办了。

于是,动手写了个脚本,可直观的显示帮助文档中大类与小类,小类与topic之间的关系。

具体如下:

#!/bin/bash
#所有操作都是在/tmp/test中操作,因为中间新建了很多临时文件,方便后续的删除。
mkdir /tmp/test
#获取上图的内容重定向到/tmp/test/test.txt文件中
mysql -uroot -p123456 -e "help contents " > /tmp/test/test.txt
#定义输出的格式,\t输出tab,\b相当于backspace一个空格,参考了tree命令的输出方式。
format="|\t\b"
#删除第一行和最后一行
sed -i '1d;$d' /tmp/test/test.txt
cd /tmp/test
#引入number的作用在于后续格式的输出
number=0

#后续用了递归调用,这里定义的是函数
function recursive(){
filename=$1
number=$[$number+1]

while read line
do
#name要做为文件名,譬如Account Management,利用tr函数是去掉字符中间的空格
name=`echo $line|tr -d [:blank:]`
#输出每个分类中的内容,可能是topic,可能是categories
mysql -uroot -p123456 -e "help $line" > $name
#取输出文件的第一行的内容,如果是具体的topic,则第一行的内容为:Name: 'ALTER USER',不然就还是categories,需要递归调用
firstline=`head -1 $name`
#整个逻辑比较复杂的有两类,一个是Numeric Functions,另一个是PLUGINS。先说PLUGINS,一般对于一个具体的topic,它的输出类似于Name: 'ALTER USER',而PLUGINS
#对应的输出却是Name: 'SHOW PLUGINS',所以下面的判断语句多了一个"$firstline" = "Name: 'SHOW PLUGINS'",针对的即是PLUGINS。另一比较复杂的是Numeric Functions
#它下面的topic有除号“/”,而这基本上是不能作为文件名的。所以在下面的判断逻辑中,如果遇到Numeric Functions,就直接打印出该类中的topic,而不进行Name: 'ALTER USER'这样的判断
if [ "$firstline" = "Name: '$line'" -o "$firstline" = "Name: 'SHOW PLUGINS'" ];then

for i in `seq $[$number-1]`
do
echo -ne $format
done
echo "├── $line"

else
#如果不是topic,则代表是categories,可递归进行判断,唯一的例外就是Numeric Functions
#下面的echo "├── $line"打印出的是categories的名字
for i in `seq $[$number-1]`
do
echo -ne $format
done
echo "├── $line"

#遇到Numeric Functions,就直接打印出该类中的topic
if [ "$line" = "Numeric Functions" ];then
sed -i '1d;$d' $name
while read functions
do
for i in `seq $number`
do
echo -ne $format
done
echo "├── $functions"
done < $name

else
#其它的categories,递归调用该函数进行判断。
sed -i '1d;$d' $name
recursive $name
number=$[$number-1]

fi
fi
done < $filename
}

#主函数
recursive /tmp/test/test.txt
#处理完毕,删除文件夹
rm -rf /tmp/test


因MySQL客户端登录数据库的时候,直接指定了密码,如果直接执行的话,会输出很多“Warning: Using a password on the command line interface can be insecure.”,

可重定向到一个文件

# sh 2.sh > 1.txt

最后文件中的结果如下:

├── Account Management
|      ├── ALTER USER
|      ├── CREATE USER
|      ├── DROP USER
|      ├── GRANT
|      ├── RENAME USER
|      ├── REVOKE
|      ├── SET PASSWORD
├── Administration
|      ├── BINLOG
|      ├── CACHE INDEX
|      ├── FLUSH
|      ├── FLUSH QUERY CACHE
|      ├── HELP COMMAND
|      ├── KILL
|      ├── LOAD INDEX
|      ├── RESET
|      ├── SET
|      ├── SHOW
|      ├── SHOW AUTHORS
|      ├── SHOW BINARY LOGS
|      ├── SHOW BINLOG EVENTS
|      ├── SHOW CHARACTER SET
|      ├── SHOW COLLATION
|      ├── SHOW COLUMNS
|      ├── SHOW CONTRIBUTORS
|      ├── SHOW CREATE DATABASE
|      ├── SHOW CREATE EVENT
|      ├── SHOW CREATE FUNCTION
|      ├── SHOW CREATE PROCEDURE
|      ├── SHOW CREATE TABLE
|      ├── SHOW CREATE TRIGGER
|      ├── SHOW CREATE VIEW
|      ├── SHOW DATABASES
|      ├── SHOW ENGINE
|      ├── SHOW ENGINES
|      ├── SHOW ERRORS
|      ├── SHOW EVENTS
|      ├── SHOW FUNCTION CODE
|      ├── SHOW FUNCTION STATUS
|      ├── SHOW GRANTS
|      ├── SHOW INDEX
|      ├── SHOW MASTER STATUS
|      ├── SHOW OPEN TABLES
|      ├── SHOW PLUGINS
|      ├── SHOW PRIVILEGES
|      ├── SHOW PROCEDURE CODE
|      ├── SHOW PROCEDURE STATUS
|      ├── SHOW PROCESSLIST
|      ├── SHOW PROFILE
|      ├── SHOW PROFILES
|      ├── SHOW RELAYLOG EVENTS
|      ├── SHOW SLAVE HOSTS
|      ├── SHOW SLAVE STATUS
|      ├── SHOW STATUS
|      ├── SHOW TABLE STATUS
|      ├── SHOW TABLES
|      ├── SHOW TRIGGERS
|      ├── SHOW VARIABLES
|      ├── SHOW WARNINGS
├── Compound Statements
|      ├── BEGIN END
|      ├── CASE STATEMENT
|      ├── CLOSE
|      ├── DECLARE CONDITION
|      ├── DECLARE CURSOR
|      ├── DECLARE HANDLER
|      ├── DECLARE VARIABLE
|      ├── FETCH
|      ├── GET DIAGNOSTICS
|      ├── IF STATEMENT
|      ├── ITERATE
|      ├── LABELS
|      ├── LEAVE
|      ├── LOOP
|      ├── OPEN
|      ├── REPEAT LOOP
|      ├── RESIGNAL
|      ├── RETURN
|      ├── SIGNAL
|      ├── WHILE
├── Data Definition
|      ├── ALTER DATABASE
|      ├── ALTER EVENT
|      ├── ALTER FUNCTION
|      ├── ALTER LOGFILE GROUP
|      ├── ALTER PROCEDURE
|      ├── ALTER SERVER
|      ├── ALTER TABLE
|      ├── ALTER TABLESPACE
|      ├── ALTER VIEW
|      ├── CONSTRAINT
|      ├── CREATE DATABASE
|      ├── CREATE EVENT
|      ├── CREATE FUNCTION
|      ├── CREATE INDEX
|      ├── CREATE LOGFILE GROUP
|      ├── CREATE PROCEDURE
|      ├── CREATE SERVER
|      ├── CREATE TABLE
|      ├── CREATE TABLESPACE
|      ├── CREATE TRIGGER
|      ├── CREATE VIEW
|      ├── DROP DATABASE
|      ├── DROP EVENT
|      ├── DROP FUNCTION
|      ├── DROP INDEX
|      ├── DROP PROCEDURE
|      ├── DROP SERVER
|      ├── DROP TABLE
|      ├── DROP TABLESPACE
|      ├── DROP TRIGGER
|      ├── DROP VIEW
|      ├── RENAME TABLE
|      ├── TRUNCATE TABLE
├── Data Manipulation
|      ├── CALL
|      ├── DELETE
|      ├── DO
|      ├── DUAL
|      ├── HANDLER
|      ├── INSERT
|      ├── INSERT DELAYED
|      ├── INSERT SELECT
|      ├── JOIN
|      ├── LOAD DATA
|      ├── LOAD XML
|      ├── REPLACE
|      ├── SELECT
|      ├── UNION
|      ├── UPDATE
├── Data Types
|      ├── AUTO_INCREMENT
|      ├── BIGINT
|      ├── BINARY
|      ├── BIT
|      ├── BLOB
|      ├── BLOB DATA TYPE
|      ├── BOOLEAN
|      ├── CHAR
|      ├── CHAR BYTE
|      ├── DATE
|      ├── DATETIME
|      ├── DEC
|      ├── DECIMAL
|      ├── DOUBLE
|      ├── DOUBLE PRECISION
|      ├── ENUM
|      ├── FLOAT
|      ├── INT
|      ├── INTEGER
|      ├── LONGBLOB
|      ├── LONGTEXT
|      ├── MEDIUMBLOB
|      ├── MEDIUMINT
|      ├── MEDIUMTEXT
|      ├── SET DATA TYPE
|      ├── SMALLINT
|      ├── TEXT
|      ├── TIME
|      ├── TIMESTAMP
|      ├── TINYBLOB
|      ├── TINYINT
|      ├── TINYTEXT
|      ├── VARBINARY
|      ├── VARCHAR
|      ├── YEAR DATA TYPE
├── Functions
|      ├── Bit Functions
|      |       ├── &
|      |       ├── <<
|      |       ├── >>
|      |       ├── BIT_COUNT
|      |       ├── ^
|      |       ├── |
|      |       ├── ~
|      ├── Comparison operators
|      |       ├── !=
|      |       ├── <
|      |       ├── <=
|      |       ├── <=>
|      |       ├── =
|      |       ├── >
|      |       ├── >=
|      |       ├── BETWEEN AND
|      |       ├── COALESCE
|      |       ├── GREATEST
|      |       ├── IN
|      |       ├── INTERVAL
|      |       ├── IS
|      |       ├── IS NOT
|      |       ├── IS NOT NULL
|      |       ├── IS NULL
|      |       ├── ISNULL
|      |       ├── LEAST
|      |       ├── NOT BETWEEN
|      |       ├── NOT IN
|      ├── Control flow functions
|      |       ├── CASE OPERATOR
|      |       ├── IF FUNCTION
|      |       ├── IFNULL
|      |       ├── NULLIF
|      ├── Date and Time Functions
|      |       ├── ADDDATE
|      |       ├── ADDTIME
|      |       ├── CONVERT_TZ
|      |       ├── CURDATE
|      |       ├── CURRENT_DATE
|      |       ├── CURRENT_TIME
|      |       ├── CURRENT_TIMESTAMP
|      |       ├── CURTIME
|      |       ├── DATE FUNCTION
|      |       ├── DATEDIFF
|      |       ├── DATE_ADD
|      |       ├── DATE_FORMAT
|      |       ├── DATE_SUB
|      |       ├── DAY
|      |       ├── DAYNAME
|      |       ├── DAYOFMONTH
|      |       ├── DAYOFWEEK
|      |       ├── DAYOFYEAR
|      |       ├── EXTRACT
|      |       ├── FROM_DAYS
|      |       ├── FROM_UNIXTIME
|      |       ├── GET_FORMAT
|      |       ├── HOUR
|      |       ├── LAST_DAY
|      |       ├── LOCALTIME
|      |       ├── LOCALTIMESTAMP
|      |       ├── MAKEDATE
|      |       ├── MAKETIME
|      |       ├── MICROSECOND
|      |       ├── MINUTE
|      |       ├── MONTH
|      |       ├── MONTHNAME
|      |       ├── NOW
|      |       ├── PERIOD_ADD
|      |       ├── PERIOD_DIFF
|      |       ├── QUARTER
|      |       ├── SECOND
|      |       ├── SEC_TO_TIME
|      |       ├── STR_TO_DATE
|      |       ├── SUBDATE
|      |       ├── SUBTIME
|      |       ├── SYSDATE
|      |       ├── TIME FUNCTION
|      |       ├── TIMEDIFF
|      |       ├── TIMESTAMP FUNCTION
|      |       ├── TIMESTAMPADD
|      |       ├── TIMESTAMPDIFF
|      |       ├── TIME_FORMAT
|      |       ├── TIME_TO_SEC
|      |       ├── TO_DAYS
|      |       ├── TO_SECONDS
|      |       ├── UNIX_TIMESTAMP
|      |       ├── UTC_DATE
|      |       ├── UTC_TIME
|      |       ├── UTC_TIMESTAMP
|      |       ├── WEEK
|      |       ├── WEEKDAY
|      |       ├── WEEKOFYEAR
|      |       ├── YEAR
|      |       ├── YEARWEEK
|      ├── Encryption Functions
|      |       ├── AES_DECRYPT
|      |       ├── AES_ENCRYPT
|      |       ├── COMPRESS
|      |       ├── DECODE
|      |       ├── DES_DECRYPT
|      |       ├── DES_ENCRYPT
|      |       ├── ENCODE
|      |       ├── ENCRYPT
|      |       ├── MD5
|      |       ├── OLD_PASSWORD
|      |       ├── PASSWORD
|      |       ├── RANDOM_BYTES
|      |       ├── SHA1
|      |       ├── SHA2
|      |       ├── UNCOMPRESS
|      |       ├── UNCOMPRESSED_LENGTH
|      |       ├── VALIDATE_PASSWORD_STRENGTH
|      ├── Information Functions
|      |       ├── BENCHMARK
|      |       ├── CHARSET
|      |       ├── COERCIBILITY
|      |       ├── COLLATION
|      |       ├── CONNECTION_ID
|      |       ├── CURRENT_USER
|      |       ├── DATABASE
|      |       ├── FOUND_ROWS
|      |       ├── LAST_INSERT_ID
|      |       ├── ROW_COUNT
|      |       ├── SCHEMA
|      |       ├── SESSION_USER
|      |       ├── SYSTEM_USER
|      |       ├── USER
|      |       ├── VERSION
|      ├── Logical operators
|      |       ├── !
|      |       ├── AND
|      |       ├── ASSIGN-EQUAL
|      |       ├── ASSIGN-VALUE
|      |       ├── OR
|      |       ├── XOR
|      ├── Miscellaneous Functions
|      |       ├── DEFAULT
|      |       ├── GET_LOCK
|      |       ├── INET6_ATON
|      |       ├── INET6_NTOA
|      |       ├── INET_ATON
|      |       ├── INET_NTOA
|      |       ├── IS_FREE_LOCK
|      |       ├── IS_IPV4
|      |       ├── IS_IPV4_COMPAT
|      |       ├── IS_IPV4_MAPPED
|      |       ├── IS_IPV6
|      |       ├── IS_USED_LOCK
|      |       ├── MASTER_POS_WAIT
|      |       ├── NAME_CONST
|      |       ├── RELEASE_LOCK
|      |       ├── SLEEP
|      |       ├── UUID
|      |       ├── UUID_SHORT
|      |       ├── VALUES
|      ├── Numeric Functions
|      |       ├── %
|      |       ├── *
|      |       ├── +
|      |       ├── - BINARY
|      |       ├── - UNARY
|      |       ├── /
|      |       ├── ABS
|      |       ├── ACOS
|      |       ├── ASIN
|      |       ├── ATAN
|      |       ├── ATAN2
|      |       ├── CEIL
|      |       ├── CEILING
|      |       ├── CONV
|      |       ├── COS
|      |       ├── COT
|      |       ├── CRC32
|      |       ├── DEGREES
|      |       ├── DIV
|      |       ├── EXP
|      |       ├── FLOOR
|      |       ├── LN
|      |       ├── LOG
|      |       ├── LOG10
|      |       ├── LOG2
|      |       ├── MOD
|      |       ├── PI
|      |       ├── POW
|      |       ├── POWER
|      |       ├── RADIANS
|      |       ├── RAND
|      |       ├── ROUND
|      |       ├── SIGN
|      |       ├── SIN
|      |       ├── SQRT
|      |       ├── TAN
|      |       ├── TRUNCATE
|      ├── String Functions
|      |       ├── ASCII
|      |       ├── BIN
|      |       ├── BINARY OPERATOR
|      |       ├── BIT_LENGTH
|      |       ├── CAST
|      |       ├── CHAR FUNCTION
|      |       ├── CHARACTER_LENGTH
|      |       ├── CHAR_LENGTH
|      |       ├── CONCAT
|      |       ├── CONCAT_WS
|      |       ├── CONVERT
|      |       ├── ELT
|      |       ├── EXPORT_SET
|      |       ├── EXTRACTVALUE
|      |       ├── FIELD
|      |       ├── FIND_IN_SET
|      |       ├── FORMAT
|      |       ├── FROM_BASE64()
|      |       ├── HEX
|      |       ├── INSERT FUNCTION
|      |       ├── INSTR
|      |       ├── LCASE
|      |       ├── LEFT
|      |       ├── LENGTH
|      |       ├── LIKE
|      |       ├── LOAD_FILE
|      |       ├── LOCATE
|      |       ├── LOWER
|      |       ├── LPAD
|      |       ├── LTRIM
|      |       ├── MAKE_SET
|      |       ├── MATCH AGAINST
|      |       ├── MID
|      |       ├── NOT LIKE
|      |       ├── NOT REGEXP
|      |       ├── OCT
|      |       ├── OCTET_LENGTH
|      |       ├── ORD
|      |       ├── POSITION
|      |       ├── QUOTE
|      |       ├── REGEXP
|      |       ├── REPEAT FUNCTION
|      |       ├── REPLACE FUNCTION
|      |       ├── REVERSE
|      |       ├── RIGHT
|      |       ├── RPAD
|      |       ├── RTRIM
|      |       ├── SOUNDEX
|      |       ├── SOUNDS LIKE
|      |       ├── SPACE
|      |       ├── STRCMP
|      |       ├── SUBSTR
|      |       ├── SUBSTRING
|      |       ├── SUBSTRING_INDEX
|      |       ├── TO_BASE64()
|      |       ├── TRIM
|      |       ├── UCASE
|      |       ├── UNHEX
|      |       ├── UPDATEXML
|      |       ├── UPPER
|      |       ├── WEIGHT_STRING
├── Functions and Modifiers for Use with GROUP BY
|      ├── AVG
|      ├── BIT_AND
|      ├── BIT_OR
|      ├── BIT_XOR
|      ├── COUNT
|      ├── COUNT DISTINCT
|      ├── GROUP_CONCAT
|      ├── MAX
|      ├── MIN
|      ├── STD
|      ├── STDDEV
|      ├── STDDEV_POP
|      ├── STDDEV_SAMP
|      ├── SUM
|      ├── VARIANCE
|      ├── VAR_POP
|      ├── VAR_SAMP
├── Geographic Features
|      ├── GEOMETRY
|      ├── GEOMETRY HIERARCHY
|      ├── SPATIAL
|      ├── Geometry constructors
|      |       ├── GEOMETRYCOLLECTION
|      |       ├── LINESTRING
|      |       ├── MULTILINESTRING
|      |       ├── MULTIPOINT
|      |       ├── MULTIPOLYGON
|      |       ├── POINT
|      |       ├── POLYGON
|      ├── Geometry properties
|      |       ├── DIMENSION
|      |       ├── ENVELOPE
|      |       ├── GEOMETRYTYPE
|      |       ├── ISEMPTY
|      |       ├── ISSIMPLE
|      |       ├── SRID
|      |       ├── ST_DIMENSION
|      |       ├── ST_ENVELOPE
|      |       ├── ST_GEOMETRYTYPE
|      |       ├── ST_ISEMPTY
|      |       ├── ST_ISSIMPLE
|      |       ├── ST_SRID
|      ├── Geometry relations
|      |       ├── CONTAINS
|      |       ├── CROSSES
|      |       ├── DISJOINT
|      |       ├── EQUALS
|      |       ├── INTERSECTS
|      |       ├── OVERLAPS
|      |       ├── ST_CONTAINS
|      |       ├── ST_CROSSES
|      |       ├── ST_DISJOINT
|      |       ├── ST_DISTANCE
|      |       ├── ST_EQUALS
|      |       ├── ST_INTERSECTS
|      |       ├── ST_OVERLAPS
|      |       ├── ST_TOUCHES
|      |       ├── ST_WITHIN
|      |       ├── TOUCHES
|      |       ├── WITHIN
|      ├── LineString properties
|      |       ├── ENDPOINT
|      |       ├── GLENGTH
|      |       ├── ISCLOSED
|      |       ├── NUMPOINTS
|      |       ├── POINTN
|      |       ├── STARTPOINT
|      |       ├── ST_ENDPOINT
|      |       ├── ST_ISCLOSED
|      |       ├── ST_NUMPOINTS
|      |       ├── ST_POINTN
|      |       ├── ST_STARTPOINT
|      ├── MBR
|      |       ├── ASYMMETRIC_DECRYPT
|      |       ├── ASYMMETRIC_DERIVE
|      |       ├── ASYMMETRIC_ENCRYPT
|      |       ├── ASYMMETRIC_SIGN
|      |       ├── ASYMMETRIC_VERIFY
|      |       ├── CREATE_ASYMMETRIC_PRIV_KEY
|      |       ├── CREATE_ASYMMETRIC_PUB_KEY
|      |       ├── CREATE_DH_PARAMETERS
|      |       ├── CREATE_DIGEST
|      |       ├── GTID_SUBSET
|      |       ├── GTID_SUBTRACT
|      |       ├── MBR DEFINITION
|      |       ├── MBRCONTAINS
|      |       ├── MBRDISJOINT
|      |       ├── MBREQUAL
|      |       ├── MBRINTERSECTS
|      |       ├── MBROVERLAPS
|      |       ├── MBRTOUCHES
|      |       ├── MBRWITHIN
|      |       ├── SQL_THREAD_WAIT_AFTER_GTIDS
|      |       ├── WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS
|      ├── Point properties
|      |       ├── ST_X
|      |       ├── ST_Y
|      |       ├── X
|      |       ├── Y
|      ├── Polygon properties
|      |       ├── AREA
|      |       ├── CENTROID
|      |       ├── EXTERIORRING
|      |       ├── INTERIORRINGN
|      |       ├── NUMINTERIORRINGS
|      |       ├── ST_AREA
|      |       ├── ST_CENTROID
|      |       ├── ST_EXTERIORRING
|      |       ├── ST_INTERIORRINGN
|      |       ├── ST_NUMINTERIORRINGS
|      ├── WKB
|      |       ├── ASBINARY
|      |       ├── ASTEXT
|      |       ├── GEOMCOLLFROMWKB
|      |       ├── GEOMFROMWKB
|      |       ├── LINEFROMWKB
|      |       ├── MLINEFROMWKB
|      |       ├── MPOINTFROMWKB
|      |       ├── MPOLYFROMWKB
|      |       ├── POINTFROMWKB
|      |       ├── POLYFROMWKB
|      |       ├── ST_ASBINARY
|      |       ├── ST_ASTEXT
|      |       ├── ST_GEOMCOLLFROMWKB
|      |       ├── ST_GEOMFROMWKB
|      |       ├── ST_LINEFROMWKB
|      |       ├── ST_POINTFROMWKB
|      |       ├── ST_POLYFROMWKB
|      ├── WKT
|      |       ├── GEOMCOLLFROMTEXT
|      |       ├── GEOMFROMTEXT
|      |       ├── LINEFROMTEXT
|      |       ├── MLINEFROMTEXT
|      |       ├── MPOINTFROMTEXT
|      |       ├── MPOLYFROMTEXT
|      |       ├── POINTFROMTEXT
|      |       ├── POLYFROMTEXT
|      |       ├── ST_GEOMCOLLFROMTEXT
|      |       ├── ST_GEOMFROMTEXT
|      |       ├── ST_LINEFROMTEXT
|      |       ├── ST_POINTFROMTEXT
|      |       ├── ST_POLYFROMTEXT
|      |       ├── WKT DEFINITION
├── Help Metadata
|      ├── HELP_DATE
|      ├── HELP_VERSION
├── Language Structure
├── Plugins
├── Procedures
├── Storage Engines
├── Table Maintenance
|      ├── ANALYZE TABLE
|      ├── CHECK TABLE
|      ├── CHECKSUM TABLE
|      ├── OPTIMIZE TABLE
|      ├── REPAIR TABLE
├── Transactions
|      ├── CHANGE MASTER TO
|      ├── DEALLOCATE PREPARE
|      ├── EXECUTE STATEMENT
|      ├── ISOLATION
|      ├── LOCK
|      ├── PREPARE
|      ├── PURGE BINARY LOGS
|      ├── RESET MASTER
|      ├── RESET SLAVE
|      ├── SAVEPOINT
|      ├── SET GLOBAL SQL_SLAVE_SKIP_COUNTER
|      ├── SET SQL_LOG_BIN
|      ├── START SLAVE
|      ├── START TRANSACTION
|      ├── STOP SLAVE
|      ├── XA
├── User-Defined Functions
|      ├── CREATE FUNCTION UDF
|      ├── DROP FUNCTION UDF
├── Utility
|      ├── EXPLAIN
|      ├── HELP STATEMENT
|      ├── USE


总结:

整个脚本在写的过程有两点比较有意思。

1. 函数递归操作,以前没怎么使用Shell进行函数的递归操作。

2. 借鉴tree的输出格式,对结果进行格式化输出。

思路如下:首先定义一个number为0,每次进入一次recursive函数,都会把当前的number加1,如果只是这样的话,那number值将一直增长了,所以在上述脚本else调用recursive函数部分,会在其后执行number=$[$number-1],类似于恢复到上一层目录下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: