Shell编程之循环语句及案例


一、for语句的结构

读取不同的变量值,用来逐个执行同一组命令,又有人称之为条件循环,或者for i in ,其实就是for循环的特性,次数和给与的条件是成正比的。

for语句结构:

for 变量名 in 取值列表
do
  命令序列
done
for 收件人 in 邮件地址列表
do
  发送邮件
done

在这里插入图片描述

1..10

   $(seq 1 10)          #指连续的110 

((i=1;i<=10;i++))

在这里插入图片描述
显示基数

1..10..2

$(seq 1 2 10)         #13579110之间从1开始每个加2

((i=1;i<=10;i+=2))

for语句案例

计算1-100奇数之和

#!/bin/bash
sum=0
for ((i=1;i<=100;i+=2))
do
   let sum=$sum+$i
done
   echo $sum

在这里插入图片描述
在这里插入图片描述

批量添加用户
用户名存放在users.txt文件中,每行一个
初始密码均设为123456

#!/bin/bash   

a=`cat users.txt`
for i in $a
do
     useradd $i
     echo "123123" | passwd --stdin $i

done

在这里插入图片描述
在这里插入图片描述

二、while语句的结构

重复测试某个条件,只要条件成立则反复执行

while 条件测试操作
do
    命令序列
done
while 未猜中正确价格
do
    反复猜测商品价格
done

在这里插入图片描述

while循环案例

while循环计算1-100整数和

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

在这里插入图片描述
猜数字游戏

#!/bin/bash
echo "来猜数"
a=$[$RANDOM % 100]
b=0
c=0
while [ $b -lt  1  ]
  do
   read -p "请输入你要猜的数:  " d

    if [ $d -lt $a ];then
  echo "你猜小了"

  let c++
     elif [ $d -gt $a ] ;then
  echo "你猜大了" 

  let c++
     elif [ $d -eq $a  ];then
  let c++
  echo "恭喜你才对了,它的数是$a,你一共猜了$c次!!"


   fi

done

在这里插入图片描述

三、until语句的结构

重复测试某个条件,只要条件不成立则反复执行

until 条件测试操作
do
    命令序列
done

until 未超过10 
do
    数字依次递增
done

在这里插入图片描述

四、echo的特殊用法

echo -n    表示不换行输出

echo -e    输出转义字符,将转义后的内容输出到屏幕上

常用的转义字符如下:
\b    转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。

\c    不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。

\n    换行,被输出的字符从"\n"处开始另起一行。

\f    换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v    \f相同;

\t    转以后表示插入tab,即横向制表符;

\r    光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖

\\    表示插入"\"本身;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值