1.计算n以内能被3整除的数的和(包括n)
#!/bin/bash
# **********************************************************
# * Author : oldwang
# * Email : lilulilu6666@163.com
# * Create time : 2020-12-07 18:03
# * Filename : 8.sh
# * Description : lueluelue
# **********************************************************
read -p "请问你要计算几以内能被3整除的数的和: " Num
if [ -z $Num ];then
echo "输入内容不能为空!"
exit
fi
expr $Num + 1 &> /dev/null
if [ $? -ne 0 ];then
echo "输入内容必须为数字!"
exit
fi
a=0
for i in $(seq 1 $[ $Num ])
do
result=$[ $i % 3 ]
if [ $result -eq 0 ];then
a=$[ $a+$i ]
fi
done
echo "$Num以内能被3整除的数的和为:$a"
2.找出文件2中有,但文件1中没有的IP地址
#!/bin/bash
# **********************************************************
# * Author : oldwang
# * Email : lilulilu6666@163.com
# * Create time : 2020-12-07 20:45
# * Filename : 12.2.sh
# * Description : lueluelue
# **********************************************************
echo "此脚本用于找出文件2中有,但文件1中没有的IP地址"
read -p "请输入文件1的路径: " File1
if [ -z $File1 ];then
echo "输入内容不能为空!"
exit
fi
read -p "请输入文件2的路径: " File2
if [ -z $File2 ];then
echo "输入内容不能为空!"
exit
fi
echo "文件2中有,但文件1中没有的IP地址有:"
a=0
#文件1的行数
Line=$(cat ${File1} | wc -l)
for i in $(cat ${File2})
do
for j in $(cat ${File1})
do
#将文件2中的ip依次与文件1中的对比
echo "${i}" | grep -w "${j}" &> /dev/null
#不一致则a增加1
if [ $? -ne 0 ];then
a=$[ $a+1 ]
else
#当发现文件2中的ip文件1中也有时,重置a=0,并跳出此循环
a=0
break
fi
done
#当a的值与文件1的行数相等时,也就是文件2中的此ip已经与文件1中所有ip全都对比过,并没有发现重复.就将此
ip输出,并重置a=0.
if [ $a -eq $Line ];then
echo "$i"
a=0
fi
done
3.根据文件中的用户名密码批量创建用户(文件内容格式 用户名:密码)
#!/bin/bash
# **********************************************************
# * Author : oldwang
# * Email : lilulilu6666@163.com
# * Create time : 2020-12-07 20:05
# * Filename : 6.sh
# * Description : lueluelue
# **********************************************************
for i in $(cat user_passwd.txt)
do
username=$(echo "${i}" | awk -F ':' '{print $1}')
password=$(echo "${i}" | awk -F ':' '{print $2}')
id ${username} &> /dev/null
if [ $? -ne 0 ];then
useradd ${username} && \
echo "${password}" | passwd --stdin ${username} &> /dev/null
echo "用户${username}已创建成功!密码为: ${password}"
else
echo "用户${username} 已经存在!"
fi
done
echo "文件 /tmp/sh/2020-12-07_练习题/user_passwd.txt 中的用户已经创建完毕!"
4.自定义用户名前缀,用户数量和密码,批量创建用户
#!/bin/bash
# **********************************************************
# * Author : oldwang
# * Email : lilulilu6666@163.com
# * Create time : 2020-12-07 19:20
# * Filename : 5.sh
# * Description : lueluelue
# **********************************************************
read -p "请输入要创建的用户名前缀: " User_name
if [ -z $User_name ];then
echo "输入内容不能为空!"
exit
fi
if [[ $User_name =~ [0-9]+ ]];then
echo "用户名中不能包含数字!"
exit
fi
read -p "请输入要创建的用户数量: " Count
if [ -z $Count ];then
echo "输入内容不能为空!"
exit
fi
if [[ $Count =~ [a-Z]+ ]];then
echo "只能输入数字!"
exit
fi
read -p "请输入用户的统一密码: " Passwd
if [ -z $Passwd ];then
echo "输入内容不能为空!"
exit
fi
read -p "确认批量创建创建用户名前缀为 $User_name , 数量为: $Count , 统一密码为: $Passwd 的用户吗 [ y | n ] : " Action
case $Action in
y)
for i in $(seq -w ${Count})
do
id ${User_name}${i} &>/dev/null
if [ $? -eq 1 ];then
useradd ${User_name}${i} &> /dev/null
echo "$Passwd" | passwd --stdin ${User_name}${Count} &> /dev/null
echo "用户${User_name}${i}创建成功!密码为: $Passwd"
else
echo "用户${User_name}${i} 已存在!"
fi
done
;;
n)
echo "再见!"
exit
;;
*)
echo "只能输入 y 或 n !"
esac
5.分库分表备份
#!/usr/bin/bash
. /etc/init.d/functions
mysql_user=root
mysql_pass=123
mysql_data_list=$(mysql -u${mysql_user} -e "show databases;"|sed 1d | egrep -v "*_schema|mysql")
mysql_path=/backup/mysql
mysql_date=$(date +%F)
# 准备备份的目录
if [ ! -d ${mysql_path} ];then
mkdir -p ${mysql_path}
fi
#外循环: 拿到库名称,每一次都会拿到不一样的库名
for dataname in ${mysql_data_list}
do
# 内循环要做的事情: 将获取到的库名,在获取到其表名,赋值给mysql_table_list变量
mysql_table_list=$(mysql -u${mysql_user} -e "use ${dataname};show tables;" | sed 1d)
# 准备表存储的位置/backup/mysql/wordpress/2020-12-08
if [ ! -d ${mysql_path}/${dataname}/${mysql_date} ];then
mkdir -p ${mysql_path}/${dataname}/${mysql_date}
fi
# 内循环: 将每一个表名称都赋值给tablename变量
for tablename in ${mysql_table_list}
do
# 执行备份操作
mysqldump -u${mysql_user} ${dataname} ${tablename} > ${mysql_path}/${dataname}/${mysql_date}/${tablename}.sql
if [ -s ${mysql_path}/${dataname}/${mysql_date}/${tablename}.sql ];then
action "库名称:${dataname} --> 表名称: ${tablename} 备份" /bin/true
else
action "库名称:${dataname} --> 表名称: ${tablename} 备份" /bin/false
fi
done
done
6.九九乘法表
#!/bin/bash
# **********************************************************
# * Author : oldwang
# * Email : lilulilu6666@163.com
# * Create time : 2020-12-08 11:08
# * Filename : 99.sh
# * Description : lueluelue
# **********************************************************
echo ""
for i in $(seq 1 9)
do
for j in $(seq 1 9)
do
echo -n "$i * $j = $[ $i * $j ] "
if [ $i -eq $j ];then
echo -e "\n"
break
fi
done
done
7.随机点名,并且之前点过的名字不能重复点到,所有人全被点到后提示,并可开始下一轮点名
#!/bin/bash
# **********************************************************
# * Author : oldwang
# * Email : lilulilu6666@163.com
# * Create time : 2020-12-08 11:08
# * Filename : 99.sh
# * Description : lueluelue
# **********************************************************
student_total=$(cat mingdan.txt | wc -l) #人数
sj=$[ $RANDOM % $[ ${student_total} +1 ] ] #随机数除以(人数+1)取余,这样生成的余数正好在1-人数之内.
if [ ! -f yidian.txt ];then
touch yidian.txt
fi
for i in $(seq ${student_total} ) #设定循环范围在1-人数之间
do
if [ $i -eq $sj ];then #当i遍历到与生成的随机数相等时
#从名单中将对应序号的名字取出存放到Full_Name变量中
Full_Name=$(cat -n mingdan.txt | grep -w "$sj" | awk '{print $NF}')
#在yidian.txt文件中过滤上边取出的名字
grep "$Full_Name" yidian.txt &> /dev/null
if [ $? -eq 1 ];then
#如果yidian.txt中没有,就把该名字追加到yidian.txt中,并在屏幕打印该名字
echo "${Full_Name}" >> yidian.txt
echo "此次回答问题的同学是: $Full_Name"
#如果这个名字在yidian.txt文件中已存在,就再执行一遍此脚本
else
sh for_student.sh
fi
fi
done
student_yidian=$(cat yidian.txt | wc -l) #yidian.txt文件的行数
if [ ${student_total} -eq ${student_yidian} ];then #当yidian.txt文件中的名字数与名单中的名字数相等时
rm -f yidian.txt #移除yidian.txt文件,并输出所有名字都被点过的信息
echo "所有同学都已被点过一次,开始下个轮回!"
touch yidian.txt
fi
版权声明:本文为weixin_41690116原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。