sql -u$Myuser -p$Mypass"
Mydump="mysqldump -u$Myuser -p$Mypass -x -B -F -R"
Dblist=`$Mycmd -e "show databases;"|sed '1,2d'|egrep -v "_schema|mysql"`
for database in $Dblist
do
$Mydump $database|gzip >/tmp/${database}_$(date +%F).sql.gz &>/dev/null
done
7、企业Shell面试题7:脚本实现MySQL数据库分库分表备份
#!/bin/sh
Myuser=root
Mypass=123456
Mycmd="mysql -u$Myuser -p$Mypass"
Mydump="mysqldump -u$Myuser -p$Mypass -x -F -R"
Dblist=`$Mycmd -e "show databases;"|sed '1,2d'|egrep -v "_schema|mysql"`
for database in $Dblist
do
Tablist=`$Mycmd -e "show tables from $database;"|sed 1d`
for table in $Tablist
do
mkdir -p /tmp/${database}
$Mydump $database $table|gzip >/tmp/${database}/${table}_$(date +%F).sql.gz
done
done
8、企业Shell面试题8:筛选符合长度的单词案例
利用bash for循环打印下面这句话中字母数不大于6的单词(某企业面试真题)。
I am oldboy teacher welcome to oldboy training class
解答:
方法一: #!/bin/sh
for word in I am oldboy teacher welcome to oldboy training class
do
if [ ${#word} -le 6 ]
then
echo $word
fi
done
方法二:数组
#!/bin/sh
word=(I am oldboy teacher welcome to oldboy training class)
for((i=0;i<${#word[*]};i++))
do
if [ `echo ${word[i]}|wc -L` -le 6 ]
then
echo ${word[i]}
fi
done
方法三:awk
echo "I am oldboy teacher welcome to oldboy training class"|awk '{for(i=1;i<=NF;i++)if(length($i)<=6)print $i}'
9、企业Shell面试题9:MySQL主从复制异常监控案例
10、企业Shell面试题10:比较整数大小经典案例
综合实战案例:开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。用条件表达式(禁止if)进行判断并以屏幕输出的方式提醒用户比较结果。注意:一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数不对给予提示
解答:
传参的方法:
#!/bin/sh
num1=$1
num2=$2
[ $# -ne 2 ] && echo "请输入两个数字:" && exit 1
expr 1 + $num1 &>/dev/null
[ $? -eq 2 ] && echo "输入的第一个数字不是整数" && exit 2
expr 1 + $num2 &>/dev/null
[ $? -eq 2 ] && echo "输入的第二个数字不是整数" && exit 2
[ $num1 -lt $num2 ] && echo "$num1<$num2" && exit 0
[ $num1 -eq $num2 ] && echo "$num1=$num2" && exit 0
echo "$num1>$num2"
read读入方法:
#!/bin/sh
read -p "请输入第一个数字:" num1
read -p "请输入第二个数字:" num2
expr 1 + $num1 &>/dev/null
[ $? -eq 2 ] && echo "输入的第一个数字不是整数" && exit 2
expr 1 + $num2 &>/dev/null
[ $? -eq 2 ] && echo "输入的第二个数字不是整数" && exit 2
[ $num1 -lt $num2 ] && echo "$num1<$num2" && exit 0
[ $num1 -eq $num2 ] && echo "$num1=$num2" && exit 0
echo "$num1>$num2"
11、企业Shell面试题11:菜单自动化软件部署经典案例
综合实例:打印选择菜单,按照选择一键安装不同的Web服务。
示例菜单:
[root@oldboy scripts]# shmenu.sh
1.[install lamp]
2.[install lnmp]
3.[exit]
pls input the num you want:
要求:
1、当用户输入1时,输出“startinstalling lamp.提示”然后执行/server/scripts/lamp.sh,脚本内容输出"lampis installed"后退出脚本,工作中就是正式lamp一键安装脚本;
2、当用户输入2时,输出“startinstalling lnmp.提示” 然后执行/server/scripts/lnmp.sh输出"lnmpis installed"后退出脚本,工作中就是正式lnmp一键安装脚本;
3、当输入3时,退出当前菜单及脚本;
4、当输入任何其它字符,给出提示“Input error”后退出脚本;
5、要对执行的脚本进行相关的条件判断,例如:脚本文件是否存在,是否可执行等判断,尽量用上前面讲解的知识点。
解答:
#!/bin/sh
. /etc/init.d/fu |