必须了解的Shell循环语句介绍与实例

1 for语句的结构

■ 读取不同的变量值,用来逐个执行同一组命令

 for  变量名 in 取值列表        
 do   
      命令序列        
 done

● 使用for循环语句时,需要指定一个变量及可能的取值列表,针对每个不同的取值重复执行相同的命令列,直到 变量值用完退出循环。“取值列表”称为for 语句的执行条件,其中包括多个属性相同的对象,需要预先指定

例:创建一个新用户列表,内容根据人事给定的姓名拼音来认定

[root@localhost~] # vim users. txt //用做测试的列表文件
chenye
dengchao
zhangjie 
循环创建列表里这些用户,并给他们这些设定初始密码,密码为“123456[root@localhost~]# vim uaddfor. sh //批量添加用户的脚本
#!/bin/bash
ULIST=$(cat /root/users. txt)
for UNAME in $ULIST
do
if [  $uname == ` grep $uname  /etc/passwd | awk -F: ’{print $1}’ ` ]
then echo "姓名重复"
fi
useradd $UNAME
echo "123456" |  passwd --stdin $UNAME &>/dev/null
done
[root@localhost~] # chmod +x uaddfor. sh
[root@localhost~] # . /uaddfor. sh //测试并确认执行结果

2 while语句的结构

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

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

● for循环语句非常适用于列表对象无规律,且列表来源已固定(如果个列表文件)的场合。而对于要求控制循环次 数、操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合使用另外一种循环-while 语句。

例:若要添加20个用户,名称依次为stul、 stu2、… stu20

[root@localhost~ ]# vim uaddwhile. sh  
#!/bin/bash
i=1
while [ $i -le 20 ] //控制循环条件
do    //重复循环执行的操作
uname=" stu$i "
if [ $uname ==  `grep $uname  /etc/  passwd | awk -F: ’{print  $1}’ ` ]
then echo"姓名重复"
fi
useradd $uname
echo 123456 | passwd --stdin $uname &> /dev/null
let i++
done
[root@localhost~]# chmod +x uaddwhile. sh
[root@localhost~]# . /uaddwhile. sh

3 until语句的结构

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

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

● until循环与while循环类似,while循环能实现的脚本until 同样也可以实现,但区别是while 循环在条件为真是继续执行循环,而until 则是在条件为假时执行循环。

例:计算从1到50的和,从1开始相加,采用循环的方式,每次循环后加1,将得到的值加入计算的和中数字运算采用的是let方式,直到加到50为止

[ root@localhost ]# vim sum1to50_until_ v1. sh
#!/bin/ bash
i=0
s=0
until  [ $i  -eq  50 ]
do         
        let " i=$i+1 " ; let  " s=$s+$i "
done
echo’ sum(1..50)=’$s
[root@localhost~]# chmod +x sum1to50_until_vl.sh 
[root@localhost~]# . / sumlto50_ until_ v1.sh
sum(1..50)=1275
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值