Shell脚本for循环小实验

目录

1、计算1-100的和

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

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

4、执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码 

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

6、检测指定范围主机是否通信,将通信的主机ip输出到文件host_ip中

7、用户名存放在users .txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则接设置密码;若该用户不存在,提示用户输入密码,建立用户并设立其密码

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

9、生成8位数密码

10、将0-255之间的十进制数转换为二进制数


1、计算1-100的和

[root@localhost for]# vim 1.sh

#!/bin/bash
#计算1-100的和
sum=0
for ((i=0;i<=100;i++))
do
sum=$[$sum + i ]
done
echo "1到100的和为:$sum"
[root@localhost for]# bash 1.sh
1到100的和为:5050

 

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

[root@localhost for]# vim 2.sh

#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
read -p "请输入小于一个0-100的整数:" num
sum=0
if [ $num -le 100 ];then
  for((i=1;i<=$num;i++))
  do
    sum=$[ sum + i]
  done
    echo "1-$num的和为:$sum"
else
  echo "输入错误,请输入小于100的整数"
fi

[root@localhost for]# bash 2.sh
请输入小于一个0-100的整数:4     
1-4的和为:10

 

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

[root@localhost for]# vim 3.sh

# !/bin/ bash
SUM=0
sum=0
for i in {1..100}
do
  a=$[ i % 2 ]
  if [ $a -eq 0 ] ;then
    SUM=$[ SUM + i ]
  else
    sum=$[ sum + i]
  fi
  #sum=$[$sum + $i]
  #let sum+=$i
done
echo "1到100的奇数和为$sum"
echo "1到100的偶数和为$SUM"
[root@localhost for]# bash 3.sh
1到100的基数和为2500
1到100的偶数和为2550

 

4、执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码 

[root@localhost for]# vim 4.sh

#!/bin/bash
#执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户>并设立其密码
read -p "请输入你要创建的用户:" user
cat /etc/passwd |grep $user &> /dev/null
if [ $? -eq 0 ];then
  echo "${user}用户已存在,请重新输入"
else
  read -p "请输入创建用户的密码:" pass
  useradd $user
  echo "$pass" | passwd --stdin $user
fi
[root@localhost for]# bash 4.sh
请输入你要创建的用户:my
my用户已存在,请重新输入
[root@localhost for]# bash 4.sh
请输入你要创建的用户:yy
请输入创建用户的密码:123123
更改用户 yy 的密码 。
passwd:所有的身份验证令牌已经成功更新。

或者另一种方法
#!/bin/bash
#执行脚本输入用户名,若该用户存在,输出提示该用户已存在;若该用户不存在,提示用户输入密码,建立用户并设立其密码
read -p "请输入你要创建的用户:" user

useradd $user &> /dev/null ##如果所输入的用户已存在 useradd会执行出错
if [ $? -ne 0 ];then  ##如果创建用户时出错 则返回值$?不为0 就输入用户存在 
  echo "${user}用户已存在,请重新输入"
else
  read -p "请输入创建用户的密码:" pass
  echo "$pass" | passwd --stdin $user
fi

 

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

[root@localhost for]# vim 5.sh

#!/bin/bash
#用户输入密码,脚本判断密码是否正确,输入正确提示正确信息,连续输错3次则报警
mm=123123
for ((i=1;i<=3;i++))
do
  read -p "请输入用户密码:" pwd
  if [ $mm -eq $pwd ];then
    echo "密码输入正确"
    exit 0   ##退出脚本并且返回码为0
   else
     echo "密码输入不正确,请重新输入"
  fi
done
echo "警告密码错误三次"
[root@localhost for]# bash 5.sh
请输入用户密码:123
密码输入不正确,请重新输入
请输入用户密码:123
密码输入不正确,请重新输入
请输入用户密码:123123
密码输入正确
[root@localhost for]# bash 5.sh
请输入用户密码:123123
密码输入正确

6、检测指定范围主机是否通信,将通信的主机ip输出到文件host_ip中

[root@localhost for]# vim 6.sh

#!/bin/bash
#检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip中
for ((i=100;i<=110;i++))
do
  ping -c 2 -w 3 192.168.52.$i &>/dev/null
  if [ $? -eq 0 ]
  then
    echo "192.168.52.$i" >>/opt/host_ip
  fi
done  
[root@localhost shell]# bash 6.sh
[root@localhost opt]# cat host_ip_online 
192.168.52.100 is online
192.168.52.110 is online

7、用户名存放在users .txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则接设置密码;若该用户不存在,提示用户输入密码,建立用户并设立其密码

[root@localhost for]# vim user.txt

scx
jl
zzz
my


[root@localhost for]# vim 7.sh

#!/bin/bash
for name in `cat /root/shell/for/user.txt`
do
  cat /etc/passwd | awk -F: '{print $1}' | grep $name &> /dev/null
  if [ $? -eq 0 ];then
    echo "$name 用户已存在!"
    res=`cat /etc/shadow | grep $name | awk -F: '{print $2 }'`
    if [ "$res" == "!!" -o "$res" == "*" ];then
      read -p "$name 用户没有设置密码,请输入密码:" pswd
      echo $pswd | passwd --stdin $name
    fi
  else 
    echo "用户不存在,正在创建$name 用户....."
    useradd $name 
    read -p "请设置用户$name 的密码:" passwd1
    read -p "请再次输入用户$name 的密码:" passwd2
    if [ "$passwd1" == "$passwd2" ];then
      echo $passwd1 | passwd --stdin $name
    else
      echo "密码设置不一致"
    fi
  fi   
done
[root@localhost for]# bash 7.sh 
scx 用户已存在!
jl 用户已存在!
jl 用户没有设置密码,请输入密码:123123
更改用户 jl 的密码 。
passwd:所有的身份验证令牌已经成功更新。
用户不存在,正在创建zzz 用户.....
请设置用户zzz 的密码:123123
请再次输入用户zzz 的密码:123123
更改用户 zzz 的密码 。
passwd:所有的身份验证令牌已经成功更新。
my 用户已存在!

 

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

[root@localhost for]# vim 8.sh

#!/bin/bash
#初始密码
default=123123
for ((i=1;i<=3;i++))
do
  read -p "请输入密码:" passwd
  if [ "$passwd" == "$default" ];then
    echo "密码输入正确"
    ##结束脚本 且返回码为0
    exit 0
  else
    echo "密码输入不正确!请重新输入" 
  fi
done
echo "您的密码已连续输错3次,即将锁定!"
[root@localhost for]# bash 8.sh
请输入密码:123123
密码输入正确
[root@localhost for]# bash 8.sh
请输入密码:1231231
密码输入不正确!请重新输入
请输入密码:12312
密码输入不正确!请重新输入
请输入密码:123123
密码输入正确
[root@localhost for]# bash 8.sh
请输入密码:123
密码输入不正确!请重新输入
请输入密码:123
密码输入不正确!请重新输入
请输入密码:123
密码输入不正确!请重新输入
您的密码已连续输错3次,即将锁定!

 9、生成8位数密码

[root@localhost ~]# vim 9.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 for]# bash 9.sh
本次生成的密码为:CRfkdaNy
[root@localhost for]# bash 9.sh
本次生成的密码为:U7m8jrPI

10、将0-255之间的十进制数转换为二进制数

方法一:使用减法

[root@localhost for]# vim 10.sh

#!/bin/bash
read -p "请输入一个0-255之间的整数:" num
##i的取值范围为:2的0次方 到 大小最接近255的2的次方
for i in {128,64,32,16,8,4,2,1}
do
#定义一个变量a a=输入的值减去i的值
  a=$[ num - i ]
#如果输入的值减i小于0那么就输出0
  if [ $a -lt 0 ];then
  #不换行输出0
    echo -n 0
#如果输入的值减i大于等于0那么就输出1
  else
  #不换行输出1
    echo -n 1
  #给num赋新值为输入的值减去i的得数
    num=$[ num - i ]
  fi
done
#换行输出
echo""

[root@localhost for]# bash 10.sh
请输入一个0-255之间的整数:234
11101010
[root@localhost for]# bash 10.sh
请输入一个0-255之间的整数:245
11110101

方法二:使用求余的方法

[root@localhost for]# vim 11.sh

#!/bin/bash
read -p "请输入一个0-255的整数值:" num
#进行8次运算
for i in {1..8}
do
  #求出输入值除以2所得的余数赋值给var
  var=$[ num % 2 ]
  #对求出来的余数进行倒序追加所取的余数
  sum=$var$sum
  #得出进入下次循环的新值
  num=$[ num /2 ]
done
#输出得到的二进制数  
echo $sum
[root@localhost for]# bash 11.sh
请输入一个0-255的整数值:44
00101100
[root@localhost for]# bash 11.sh
请输入一个0-255的整数值:245   
11110101

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值