Shell的循环语句

引言:Shell循环可以方便的帮助我们日常工作,提高工作效率,大志内容总结了一些。

目录

引言:Shell循环可以方便的帮助我们日常工作,提高工作效率,大志内容总结了一些。

一、for循环

二、while循环

三、until循环

总结:shell循环在LInux系统中有很多的应用方式,对于日常工作查找文件数目,判断内存大小等等还是很有帮助的。


一、for循环

for 变量名 in 列表;do

         循环体

done

依次将列表中的元素赋值给“变量名”; 每次赋值后即执 行一次循环体; 直到列表中的元素耗尽,循环结束

比如创建用户,设置随机8位密码,包含数字、大小写字母、符号。并要求用户使用密码首次登录后,强制设置新密码。

先进入home目录,创建一个shell脚本并编辑

 

 

#!/bin/bash
> /root/user.log
for i in {1..10};do
#创建五个用户
        useradd t$i && echo t$i is created
#随机生成密码
        password=$(cat /dev/urandom |tr -dc '0-9a-zA-Z!@_#?.,' |head -c 8)
#将用户和密码导出到user日志
        echo t$i:$password >> /root/user.log
#设置密码
        echo $password |passwd --stdin t$i &> /dev/null
#强制下次登录修改密码
        passwd -e user$i &> /dev/null
done

二、while循环

 while CONDITION; do

                循环体

done

CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行 一次循环;直到条件测试状态为“false”终止循环

因此:CONDTION一般应该有循环控制变量;而此变量的值 会在循环体不断地被修正

    进入条件:CONDITION为true

    退出条件:CONDITION为false

“:” 和true的返回值都为真

判断/var/目录下所有文件的类型

#!/bin/bash
dc=0
lc=0
cc=0
bc=0
oc=0
zc=0

ls -l /var |grep -v total >/tmp/var_ftype.txt
while read lines
do
   ftype=`echo $lines |awk '{print $1}' |cut -c 1`
   case $ftype in
        d) dname=`echo $lines |awk '{print $9}'`; echo "$dname is a Directory" ; let dc+=1;;
        l) lname=`echo $lines |awk '{print $9}'`; echo "$lname is a Links of Soft " ;let lc+=1 ;;
        c) cname=`echo $lines |awk '{print $9}'`; echo "$cname is a Character of file" ;let cc+=1;;
        b) bname=`echo $lines |awk '{print $9}'`; echo "$bname is a Block file" ; let bc+=1;;
        -) zname=`echo $lines |awk '{print $9}'`; echo "$zname is a common file" ; let zc+=1;;
        *) echo "Others files"; let oc+=1

   esac

done </tmp/var_ftype.txt
echo '-----------------------------' 
echo -e "var目录下普通文件数量: $zc\nvar目录下子目录数量:$dc\nvar目录下链接文件数量:$lc\nvar目录下字符类型文件数量: $cc\nvar
目录下块设备文件数量:$bc\n其他类型文件数量:$oc"
rm -f /tmp/var_ftype.txt

三、until循环

until 条件测试
do                                                                                                                                                     =执行命令
done

如果条件测试结果为假(传回值不为0),就进入循环。

执行命令区域。这些命令中,应该有改变条件测试的命令,这样子,才有机会在有限步骤后结束执行until 循环(除非你想要执行无穷循环)。

回到第一行,执行until命令。

until99乘法表

#!/bin/bash
a=1
b=1
until ((a>9)) #until 和while相反,条件假的执行,条件真就done结束
do
         until ((b>a))
         do
                 let "c=a*b"
                 echo -n "$a*$b=$c "
                 let b++
         done
         let a++
         let b=1
         echo ""
done

总结:shell循环在LInux系统中有很多的应用方式,对于日常工作查找文件数目,判断内存大小等等还是很有帮助的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值