因为我mysql安装的时候没有去源码安装,所以如果你是使用源码安装,或者PATH中没有mysql的bin程序环境变量的话,请自己在下面脚本内自行添加。
在输入编号ID的时候不要输入特殊字符,我没做过滤,到时脚本会报错,还有没有做一直脚本循环,写的比较着急,因为今天要下班啦哈哈。不知道你有没有办法处理这个问题,我以前好像处理过,不过好久不写都忘记了!这个脚本满意的地方是,没有用临时文件处理数据,而是采用数组的方式。看网上几乎没有人这样去存储数据到数组,也算是自己一个一个去做实验的结果吧!希望能给没有用过这种方式的朋友多一个方向吧!
#!/bin/bash USERNAME=root PASSWORD= DATA_LIST="" declare -a ARR_LIST DATABASE_NUM=`mysqlshow -u ${USERNAME} -p${PASSWORD} |awk -F ' ' '{ print $2}'|grep -v -E "^Databases|^$|#" |wc -l` for((i=1;i< =${DATABASE_NUM};i++)); do { DATA_LIST=${DATA_LIST}' '`mysqlshow -u ${USERNAME} -p${PASSWORD} |awk -F ' ' '{ print $2}'|grep -v -E "^Databases|^$|#" |awk 'NR=='${i}'{print $1}' `; } done I=$DATABASE_NUM ARR_LIST=( ${DATA_LIST} ) clear echo "Do not enter special characters" echo "Please access numbers to back up the database, or " echo "" while [ "$I" -gt "0" ] do ((I=$I-1)) echo -e "\033[40;37;4m $I \033[0m --> \033[40;37;4m${ARR_LIST[$I]}\033[0m;" done echo "" while [[ "${ID}" -gt "${DATABASE_NUM}" ]] || [[ -z ${ID} ]] do echo -n -e "\033[31;1m Please enter the database ID:\033[0m" ;read ID if [[ ${ID} == all ]] || [[ ${ID} == ALL ]]; then mysqldump -u ${USERNAME} -p${PASSWORD} --all-database > mysql_date_all_`date +%y%m%d%H%m`.sql fi done mysqldump -u ${USERNAME} -p${PASSWORD} ${ARR_LIST[$ID]} > ${ARR_LIST[$ID]}_`date +%Y%m%d%H%M`.sql
- THE END -
好文
好东西哇~~~
谢谢,希望大家多多指点,里面很多不足指出还望指出 也欢迎提供更多信息哦