Shell脚本while循环小实验

这篇博客展示了使用Shell脚本进行数学运算,如计算1-100的和以及用户输入数的和;用户管理,检查用户是否存在并创建新用户;网络主机状态检测,分别记录在线与离线主机;还包括密码验证和随机密码生成。内容涵盖了基本的脚本编程和系统管理操作。
摘要由CSDN通过智能技术生成

目录

1、计算1-100的和

2、提示用户输入一个小于100的整数,并计算从1到该数之间所有整数和

3、从1到100所有整数的偶数和、奇数和

4、用户名存放在users .txt文件中,每行一个,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码 初始密码为123123

5、检测指定范围主机是否通信,将通信的主机ip输出到文件host_ip_online中不通信的主机ip输出到文件host_ip_offline中

6、用户输入密码,脚本判断密码是否正确,正确密码123123,输入正确提示正确信息,连续输错3次则报警。

7、生成八位数的随机密码,取值范围为大小写英文字母和数字

8、将一个 0到255 之间的十进制数转换成八位的二进制数


1、计算1-100的和

[root@localhost ~]# seq -s+ 100 |bc  
5050
[root@localhost shell]# vim 1.sh

#!/bin/bash
sum=0
i=0
while [ $i -le 100 ]
do
  sum=$[ $sum + $i ]
  i=$[ i + 1 ]
done
  echo "1-100的整数和为:$sum"
[root@localhost shell]# bash 1.sh
1-100的整数和为:5050

2、提示用户输入一个小于100的整数,并计算从1到该数之间所有整数和

[root@localhost shell]# vim 2.sh

#!/bin/bash
read -p "请输入小于一个0-100的整数:" num
sum=0
i=1
if [ $num -le 100 ];then
  while [ $i -le $num ]
  do
    sum=$[ sum + i]
    i=$[i+1]
  done
    echo "1-$num的和为:$sum"
else
  echo "输入错误,请输入小于100的整数"
fi
[root@localhost shell]# bash 2.sh
请输入小于一个0-100的整数:50
1-50的和为:1275

 

3、从1到100所有整数的偶数和、奇数和

##计算1-100偶数的和
[root@localhost ~]# seq -s+ 0 2 100 |bc
2550
##计算1-100奇数的和
[root@localhost ~]# seq -s+ 1 2 100 |bc
2500
[root@localhost shell]# vim 3.sh

#!/bin/bash

SUM=0
sum=0
i=0
while [ $i -le 100 ]
do
  a=$[ i % 2 ]
  if [ $a -eq 0 ] ;then
    SUM=$[ SUM + i]
  else
    sum=$[ sum + i]
  fi
  let i++
done
echo "1到100的偶数和为$SUM"
echo "1到100的奇数和为$sum"

4、用户名存放在users .txt文件中,每行一个,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码 初始密码为123123

[root@localhost shell]# vim users.txt 

my
xxl
zs

[root@localhost shell]# vim 4.sh 

#!/bin/bash
#用户名存放在users .txt文件中,每行一个
#判断文件里的用户是否存在
#若该用户存在,输出提示该用户已存在,若该用户不存在,建立用户并设立初始密码为123123
cat /root/shell/users.txt | while read user
do
  cat /etc/passwd |grep $user &> /dev/null
  if [ $? -eq 0 ];then
    echo "用户${user}已存在"
  else
    echo "用户${user}创建中...."
    useradd $user
    echo "123123" | passwd --stdin $user
    echo "用户创建完成"
  fi
done
[root@localhost shell]# bash 4.sh 

 

5、检测指定范围主机是否通信,将通信的主机ip输出到文件host_ip_online中不通信的主机ip输出到文件host_ip_offline中

[root@localhost shell]# vim 5.sh

#!/bin/bash
#检测指定范围主机是否通信#将通信的主机ip输出到文件host_ip_online中不通信的主机ip输出到文件host_ip_offline中
i=100
while [ $i -le 110 ]
do
  ping -c 2 -w 3 192.168.52.$i &>/dev/null

  if [ $? -eq 0 ]
  then
    echo "192.168.52.$i is online" >>/opt/host_ip_online
  else
    echo "192.168.52.$i is offline" >>/opt/host_ip_offline
  fi
  let i++
done
[root@localhost shell]# bash 5.sh
[root@localhost opt]# cat host_ip_online 
192.168.52.100 is online
192.168.52.110 is online
[root@localhost opt]# cat host_ip_offline 
192.168.52.101 is offline
192.168.52.102 is offline
192.168.52.103 is offline
192.168.52.104 is offline
192.168.52.105 is offline
192.168.52.106 is offline
192.168.52.107 is offline
192.168.52.108 is offline
192.168.52.109 is offline

 

6、用户输入密码,脚本判断密码是否正确,正确密码123123,输入正确提示正确信息,连续输错3次则报警。

[root@localhost shell]# vim 6.sh 

#!/bin/bash
#用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
mm=123123 #默认密码
i=1
while [ $i -le 3 ]

do
  read -p "请输入用户密码:" pwd
  if [ $mm -eq $pwd ];then   #原始密码与输入一直时输出密码正确
    echo "密码输入正确"
    exit 0  #退出脚本 返回值为0
   else
     echo "密码输入不正确,请重新输入"
  fi
  let i++
done
echo "警告密码错误三次"
[root@localhost shell]# bash 6.sh 
请输入用户密码:123
密码输入不正确,请重新输入
请输入用户密码:123
密码输入不正确,请重新输入
请输入用户密码:123123
密码输入正确

 

7、生成八位数的随机密码,取值范围为大小写英文字母和数字

[root@localhost ~]# vim 7.sh

#!/bin/bash
#生成8位数密码
##定义密码的取值范围
String="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

##循环8次
for ((i=1;i<=8;i++))
do
  ##每次循环随机获取0到字符串长度减1的下标值
  num=$[ RANDOM % ${#String} ]
  ##进行字符串的截取,每次截取1个
  var=${String:num:1}
  ##每次追加生成的密码
  passwd+=$var
done
echo "本次生成的密码为:$passwd"
[root@localhost ~]# bash 7.sh 
本次生成的密码为:4qAYVK1e
[root@localhost ~]# bash 7.sh 
本次生成的密码为:IenBtdv0

 8、将一个 0到255 之间的十进制数转换成八位的二进制数

[root@localhost shell]# vim 8.sh

#!/bin/bash
#将一个 0到255 之间的十进制数转换成八位的二进制数
read -p "请输入0-255的整数:" num
i=1
while [ $i -le 8 ]
do
  var=$[ num % 2 ] #除2取余
  sum=$var$sum     #将每次的余数倒序排列
  num=$[ num / 2 ] #将输入的值除2得出的数继续执行上述对2取余
  let i++
done
echo "二进制数为:$sum"
[root@localhost shell]# bash 8.sh 
请输入0-255的整数:244   
二进制数为:11110100

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值