#并发备份数据库
#!/bin/bash
exec &> /tmp/mysql_bak.log
if ! which innobackupex &>/dev/null
then
	echo "安装xtrabackup工具"
	rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm && \
	yum install -y percona-xtrabackup-24
	if [ $? -ne 0 ]
	then
		echo "安装xtrabackup工具出错,请检查。"
		exit 1
	fi
fi

bakdir=/data/backup/mysql
bakuser=vyNctM
bakpass=99omeaBHh

function bak_data {
	db_name=$1
	db_host=$2
	db_port=$3
	cnf=$4
	[ -d $bakdir/$db_name ] || mkdir -p $bakdir/$db_name
	innobackupex --defaults-file=$4 --host=$2 --port=$3 --user=$bakuser --password=$bakpass $bakdir/$1
	if [ $? -ne 0 ]
	then
		echo "备份数据库$! 出现问题。"
	fi
}

fifofile=/tmp/$$
mkfifo $fifofile
exec 1000<>$fifofile

thread=10
for ((i=0;i<$thread;i++))
do
	echo >&1000
done

cat /tmp/database.list |while read line
do
	read -u1000
	{
		bak_data `echo $line`
		echo >&1000
	} &
done

wait
exec 1000>&-
rm -f $fifofile

#打印三角形
#!/bin/bash
while true
do
	read -p "please input the lenth: " ne
	if [ -z $n ]
	then
		echo "要输入一个数字。"
		continue
	else
		n1=`echo $n|sed 's/[0-9]//g'`
		if [ -n "$n1" ]
		then
			echo "你输入的不是纯数字,重新输入。"
			continue
		else
			break
		fi
	fi
done

for i in `seq 1 $n`
do
	j=$[$n-$i]
	for m in `seq $j`
	do
		echo -n " "
	done
	
	for p in `seq 1 $i`
	do
		echo -n "* "
	done
done

#截取字符器
#!/bin/bash
var=http://www.aaa.com/root/123.html
echo $var |awk -F '//' '{print $2}'
echo $var |sed 's#http://##'
echo $var |awk -F '/' '{print $5}'
echo $var |sed 's#/123.htm##'
echo $var |awk -F '//' '{print $1}'
echo $var |awk -F 'www' '{print $1}'
echo $var |awk -F '/' '{print $4"/"$5}'
echo $var |awk -F '/' '{print $5}' | awk -F '.' '{print $1}'

#修改文本格式,将两行合并为一行。
#!/bin/bash
#sed 'N;s/\n/:/' test3.txt
n=`wc -l test3.txt|awk '{print $1}'`
n2=$[$n/2]

for i in `seq 1 $n2`
do 
	i2=$[$i*2]
	j=$[$i2-1]
	l1=`sed -n "$i2"p test3.txt`
	l2=`sed -n "$j"p test3.txt`
	echo $l2:$l1
done

#自定义 rm
#!/bin/bash
filename=$1
big_filesystem=/data/backup/mysql

if [ ! -e $1 ]
then
	echo "$1 不存在,请使用绝对路径。"
	exit
fi

d=`date +%Y%m%d%H%M`
read -[ "Are U sure delete the file or directory $1? y/n: " c
case $c in 
	y|Y)
		mkdir -p $big_filesystem/.$d && rsync -aR $1 $big_filesystem/.$d/$1 && /bin/rm -rf $1
		;;
	n|N)
		exit 0
		;;
	*)
		echo "Please input 'y' or 'n'."
		;;
esac