五、Shell脚本:循环语句——for循环,while循环,until循环

循环语句:
1、for循环语句
2、while循环语句
3、untli循环语句

1.1 for语句的结构
读取不同的变量值,用来逐个执行同一组命令
在这里插入图片描述
1.2、for循环语句的三种语句结构用法

for语句结构:

第一种:
for 变量名 in 取值列表
do
   命令序列
done

第二种:
for 变量名 
do
   命令序列
done
 
第三种:
for((i=1;i<3;i++))
do
   命令序列
done
 第一种语句结构
 示例打印出数字1 2 3 4 5
 
#!/bin/bash
#打印出数字12345
for i in {1..5}         也可以写成1 2 3 4 5
do
  echo $i
done

在这里插入图片描述

示例三次hello
#!/bin/bash
#打印三次hello
for i in a b c
do
  echo hello
done 

在这里插入图片描述

示例打印五次hello(引用变量seq)
#!/bin/bash
#打印三次hello
for i in `seq 5`
do
  echo hello
done

另一种打印五次hello
#!/bin/bash
#打印三次hello
a=5
for i in `seq $a`
do
  echo hello
done

在这里插入图片描述
for语句调用文件内容作为取值列表

 首先创立一个文件vim best.txt 在文件里输入1 2 3 4 5

#!/bin/bash
for i in `cat best.txt`
do
  echo hello            执行命令之后会输出五次
done
~             
第二种语句结构示例
#!/bin/bash 
for i          后面不加取值列表
do
  echo $i
done
~       

在这里插入图片描述

另一种情况
#!/bin/bash 
for i
do
  echo 12345
done
~     

在这里插入图片描述

第三种语句结构示例
#!/bin/bash
#打印三次12345
for ((a=1;a<4;a++))    定义a的初始值为1,a++代表每次加1,一共三种情况,所以输出三次同理也可以这样写a=4;a>4;a--
do
  echo 12345
done

在这里插入图片描述
1.3、for和if的混合用法

示例
#!/bin/bash
#打印出1——100之间的双数
for i in {1..100}




do
   if [[ $i%2 -eq 0 ]];then
   echo $i
   fi
done
~      
示例
#!/bin/bash
#求1——100的的和
sum=0
for i in {1..100}
do
   sum=$[$sum+$i]
done
  echo $sum
~          

执行结果成功为5050
示例
打开vim liebiao.txt填写内容 xukangle zhangsan wangwu

#!/bin/bash
#多个用户,如果系统存在,输出已存在,如果不存在就创建
for name in `cat liebiao.txt`          引用该文件内容
do
id $name &> /dev/null
  if [ $? -eq 0 ];then
  echo "该用户已存在"
  else
  useradd $name
  echo "123" | passwd --stbin $name &> /dev/null
  echo "已创建用户$name,并设置密码"
  fi
done

在这里插入图片描述

示例
#!/bin/bash
#批量创建10个用户,stu打头,并创建密码,输出用户已创建
for i in {1..10}
do
   useradd stu$i &> /dev/null
   echo "123" | passwd --stbin stu$i &> /dev/null
   echo "stu${i}已创建"
done 

在这里插入图片描述

示例
#!/bin/bash
#ping同一网段主机
for i in {1..254}
do
  ping -c 192.168.153.$i &> /dev/null
if [ $i -eq 0 ];then
     echo "ping通"
else
    echo "ping不通"
fi
done
 示例
#!/bin/bash
ip=192.168.153
for i in {1..254}
do
ping -c 2 -i 0.2 $ip.$! &> /dev/null
if [ $? -eq 0 ];then
   echo "$ip.$i 在线"
else
   echo "$ip/$i 不在线"
fi
done
#!/bin/bash
#打出5个星星
for i in {1..5}
do
echo "*"
done

在这里插入图片描述

#!/bin/bash
#打出5个星星
for i in {1..5}
do
echo -n  "* "    加入-n为输出内容为横向
done

在这里插入图片描述

#!/bin/bash
#打出5个星星
for i in {1..5}
do
echo -n  "* "
done
echo

在这里插入图片描述

#!/bin/bash
#打出星星矩阵
for j in {1..5}
do
   for i in {1..5}
   do
   echo -n  "* "
   done
   echo
done

在这里插入图片描述

#!/bin/bash
#打出星星任意大小的矩阵
read -p "输入矩阵的规模:" x
for ((j=1;j<=$x;j++))
do
   for ((i=1;i<=$x;i++))
   do
   echo -n  "* "
   done
   echo
done

在这里插入图片描述

#!/bin/bash
#打出直角三角形任意大小的矩阵
read -p "输入直角三角形矩阵的规模:" x
for ((j=1;j<=$x;j++))
do
   for ((i=1;i<=$j;i++))
   do
   echo -n  "* "
   done
   echo
done

在这里插入图片描述
2.1、while语句的结构
定义:重复测试某个条件,只要条件成立则反复执行
在这里插入图片描述
2.2while语句的用法

示例
#!/bin/bash
while [ 1 -eq 1 ]
do
echo hello
done
执行命令后会一直循环输出hello
#!/bin/bash
while true (或者是:)
do
echo hello
done
执行命令后会一直循环输出hello
#!/bin/bash
i=1
while [ $i -le 5 ] 
do
echo $i
let i++
done        

在这里插入图片描述

#!/bin/bash
#求1??100的和
i=1
sum=0
while [ $i -le 100 ] 
do
  let sum=$i+$sum
  let i++
done
  echo $sum

在这里插入图片描述

#!/bin/bash
#求1??100的偶数和
i=1
sum=0
while [ $i -le 100 ] 
do
  if [ $((i%2)) -eq 0 ];then
  let sum=$i+$sum
  fi
let i++
done
  echo $sum

在这里插入图片描述
2.3三个退出用法
break 退出当前循环
continue 退出上面的循环,不会继续下面的
exit 退出脚本,不会显示执行命令后应该显示的内容

示例
#!/bin/bash
#猜数字游戏
n=30
while true
do
read -p "输入一个数字:" num
if [ $num -eq $n ];then
echo "你猜对了"
break          退出当前循环
elif [ $num -gt $n ];then
echo "你猜大了"
elif [ $num -lt $n ];then
echo "你猜小了"
fi
done

在这里插入图片描述

#!/bin/bash
#循环110,让他15就退出
i=1
while [ $i -le 10 ]
do
echo $i
  if [ $i -ge 5 ];then
  break
  fi
  let i++
done

在这里插入图片描述

#!/bin/bash
#循环110,让他15就退出
i=1
while [ $i -le 10 ]
do
echo $i
  if [ $i -ge 5 ];then
  continue
  fi
  let i++
done
执行命令后不会识别i++,会一直输出5
#!/bin/bash
#循环110,让他15就退出
i=1
while [ $i -le 10 ]
do
echo $i
  if [ $i -ge 5 ];then
  exit
  fi
  let i++
done
echo xxx               

在这里插入图片描述

返回码的使用
#!/bin/bash
#循环110,让他15就退出
i=1
while [ $i -le 10 ]
do
echo $i
  if [ $i -ge 5 ];then
  exit 33  指定一个返回码
  fi
  let i++
done
echo xxx

在这里插入图片描述
3.1、until语句结构用法
定义:重复测试某个条件,只要条件不成立则反复执行
在这里插入图片描述

#!/bin/bash
until  [ 1 -lt 1]
do
echo 11
done
执行命令后会一直循环11
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值