实验一
实验要求:计算从1到100所有整数的和。
创建脚本并执行:
[root@yuji ~]# vim sum100.sh //写脚本
#!/bin/bash
# 计算从1到100之间所有整数的和。
sum=0
for i in {1..100}
do
let sum=$[sum+i]
done
echo "1-100求和的结果是$sum"
[root@yuji ~]# bash sum100.sh //执行脚本
1-100求和的结果是5050
复制代码
实验二
实验要求:提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和。
创建脚本:
[root@yuji ~]# vim sum02.sh //写脚本
#!/bin/bash
# 提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和。
read -p "请输入一个整数(1-100):" a
sum=0
for ((i=1;i<=$a;i++))
do
let sum=$[sum+i]
done
echo "求和的结果是 $sum"
复制代码
执行脚本:
[root@yuji ~]# bash sum02.sh
请输入一个整数(1-100):7
求和的结果是 28
[root@yuji ~]# bash sum02.sh
请输入一个整数(1-100):35
求和的结果是 630
[root@yuji ~]# bash sum02.sh
请输入一个整数(1-100):50
求和的结果是 1275
[root@yuji ~]# bash sum02.sh
请输入一个整数(1-100):99
求和的结果是 4950
[root@yuji ~]# bash sum02.sh
请输入一个整数(1-100):100
求和的结果是 5050
复制代码
实验三
实验要求:求从1到100所有整数的偶数和、奇数和。
创建脚本并执行:
[root@yuji ~]# vim sumji.sh
#!/bin/bash
# 求从1到100所有整数的偶数和、奇数和。
sum1=0
sum2=0
for i in {1..100}
do
a=$[$i%2]
if [ $a -eq 0 ]
then
let sum1=${sum1}+$i
else
let sum2=${sum2}+$i
fi
done
echo "1-100之间所有整数的偶数和是 ${sum1}"
echo "1-100之间所有整数的奇数和是 ${sum2}"
[root@yuji ~]# bash sumji.sh
1-100之间所有整数的偶数和是 2550
1-100之间所有整数的奇数和是 2500
复制代码
实验四
实验要求:用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码。
创建脚本:
[root@yuji ~]# cat users.txt
u01
u02
nancy
helen
lisi
[root@localhost ~]# vim addusers.sh
#!/bin/bash
# 用户名存放在users.txt文件中,每行一个.
# 判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;
# 若该用户不存在,提示用户输入密码,建立用户并设立其密码。
for user in $(cat /root/users.txt)
do
if id $user &>/dev/null
then
echo "用户 $user 已存在"
else
echo "正在创建用户 $user"
read -p "请输入密码:" key
useradd $user
echo "$key" | passwd --stdin $user
fi
done
复制代码
执行脚本:
[root@yuji ~]# bash addusers.sh
正在创建用户 u01 //创建用户u01
请输入密码:123456 //输入密码
更改用户 u01 的密码 。
passwd:所有的身份验证令牌已经成功更新。
正在创建用户 u02 //创建用户u02
请输入密码:123123 //输入密码
更改用户 u02 的密码 。
passwd:所有的身份验证令牌已经成功更新。
用户 nancy 已存在 //用户 nancy 已存在
用户 helen 已存在 //用户 helen 已存在
正在创建用户 lisi //创建用户lisi
请输入密码:123456 //输入密码
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
复制代码
实验五
实验要求:检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中。
创建脚本:
[root@localhost ~]# vim zhuji.sh
#!/bin/bash
#检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中。
for i in {10..15}
do
ping -c 3 -i 0.5 -w 2 192.168.72.$i &>/dev/null
if [ $? -eq 0 ]
then
echo "192.168.72.$i 能通信"
echo "192.169.72.$i" >> /data/host_ip
else
echo "192.168.72.$i 不能通信"
fi
done
复制代码
执行脚本:
[root@localhost ~]# bash zhuji.sh
192.168.72.10 能够通信
192.168.72.11 不能通信
192.168.72.12 不能通信
192.168.72.13 不能通信
192.168.72.14 不能通信
192.168.72.15 不能通信
[root@localhost ~]# cat /data/host_ip
192.169.72.10
复制代码
实验六
实验要求:用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警。
创建脚本:
[root@localhost ~]# vim mima1.sh
#/bin/bash
#用户输入密码,脚本判断密码是否正确,正确密码为123456;
#输入正确提示正确信息,连续输错3次则报警。
for i in {1..3}
do
read -p "请输入密码:" key
if [ "$key" = "123456" ]
then
echo "密码正确"
exit 0
else
echo "密码错误!"
fi
done
echo "警告!您已连续3次输错密码,账号即将锁定......"
复制代码
执行脚本:
[root@localhost ~]# bash mima1.sh
请输入密码:123456
密码正确
[root@localhost ~]# bash mima1.sh
请输入密码:111
密码错误!
请输入密码:222
密码错误!
请输入密码:333
密码错误!
警告!您已连续3次输错密码,账号即将锁定......
[root@localhost ~]# bash mima1.sh
请输入密码:123
密码错误!
请输入密码:123456
密码正确
复制代码
实验七
实验要求:编写能够自动生成一个8位随机密码的脚本。
创建脚本:
[root@yuji ~]# vim passran.sh
#!/bin/bash
# 要求生成8位随机密码,密码范围为26个英文字母和10个阿拉伯数字。
# ---------------------
#定义密码取值范围
string="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
#循环8次
for i in {1..8}
do
#每次循环随机获取0到字符串长度减1的下标值
num=$[RANDOM % ${#string}]
#进行字符串截取,每次随机取出1个字符
var=${string:$num:1}
#每次追加生成的密码,passwd+=$var等同于passwd=$passwd$var
passwd+=$var
done
echo "本次生成的密码为:$passwd"
复制代码
执行脚本:
[root@yuji ~]# bash passran.sh
本次生成的密码为:vZwWIwXj
[root@yuji ~]# bash passran.sh
本次生成的密码为:rySmwaTk
[root@yuji ~]# bash passran.sh
本次生成的密码为:lJTcsbV4
复制代码
实验八
实验要求:使用循环语句将一个 0到255 之间的十进制数转换成二进制数。
1)方法一:使用除法,倒取余数。
创建脚本:
[root@localhost ~]# vim shuzhi1.sh
#!/bin/bash
#使用循环语句将一个0到255之间的十进制数转换成二进制数
read -p "请输入一个整数(0-255):" num
for i in {1..8}
do
#除以2取余数
var=$[num%2]
#余数倒序排列
sum=$var$sum
num=$[num/2]
done
echo "转换成二进制数是:$sum"
复制代码
执行脚本:
[root@localhost ~]# bash shuzhi1.sh
请输入一个整数(0-255):35
转换成二进制数是:00100011
[root@localhost ~]# bash shuzhi1.sh
请输入一个整数(0-255):166
转换成二进制数是:10100110
[root@localhost ~]# bash shuzhi1.sh
请输入一个整数(0-255):255
转换成二进制数是:11111111
复制代码
2)方法二:使用减法。
创建脚本:
[root@localhost ~]# vim shuzhi2.sh
#!/bin/bash
#使用循环语句将一个0到255之间的十进制数转换成二进制数
#使用减法:十进制数减2的7次方(即128),若不够减则记为0,原数继续减2的6次方(64);
#若够减则记为1,减法运算后剩余值继续减2的6次方。以此类推,一直减到2的0次方。
#之后将每次运算的标记值按正序排列起来即为结果。
read -p "请输入一个整数(0-255):" num
for i in {128,64,32,16,8,4,2,1}
do
a=$[num -i]
if [ $a -lt 0 ]
then
echo -n 0
else
echo -n 1
num=$[num-i]
fi
done
echo ""
复制代码
执行脚本:
[root@localhost ~]# bash shuzhi2.sh
请输入一个整数(0-255):18
00010010
[root@localhost ~]# bash shuzhi2.sh
请输入一个整数(0-255):77
01001101
[root@localhost ~]# bash shuzhi2.sh
请输入一个整数(0-255):189
10111101
复制代码