循环执行
循环执行 定义:将某段代码有次数或无次数循环执行多次。 构成要素:退出条件和进入条件 循环的三种语句:for、while、until
for循环:
格式 for 变量 in 列表;do 循环执行语句 done 执行机制: 依次将列表中的元素赋值给“变量名” ; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束 列表生成方式: 1、直接给出生成列表 2、{1..10} 注意:{1..$变量名}是错误的写法 `seq start step end` start:起始值 (可以写可不写) step:步长(可以写可不写) end:终止值,可以 $变量名 3、返回列表的命令 $(common) 例如:`ls /var/*` 4、使用 glob, 如: *. sh 5、变量引用; $@, $* for循环类似c++用法 for ((控制变量初始化;条件判断表达式;控制变量的修正表达式)) do 循环体 done
for循环练习题
1、判断/var/目录下所有文件的类型 2、 添加10个用户 user1 - user10,密码同用户名 3、 /etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的文件输出为文件加stop ,以S开头的文件输出为文件名加start; “ K34filename stop” “S66filename start” 4、写一个脚本,提示输入正整数n的值,计算1+2+3+…n的总和 5、 打印九九乘法表
答案一 [root@centos7 bin]# cat varfor.sh #!/bin/bash for fname in `ls -d /var/*` 注意:ls -d /var/*列出的是文件的绝对路径,如果用ls /var/列出的为相对路径,需要到/var/目录下才能判断 do if [ -h $fname ];then echo "file $fname is symbolic link" elif [ -d $fname ];then echo "file $fname is dirctor" elif [ -f $fname ];then echo "file $fname is commom file" elif [ -b $fname ];then echo "file $fname is a block device " else [ -c $fname ] echo "file $fname is a character file" fi done [root@centos7 bin]# 答案:2 [root@centos7 bin]# cat useraddfor.sh #!/bin/bash for username in user{1..10};do if id -u $username >/dev/null 2>&1;then echo "user exit" else useradd $username echo "useradd success" echo "$username:$username" |chpasswd fi done [root@centos7 bin]# 答案:3 [root@centos7 bin]# cat rc3d.sh #!/bin/bash for fname in $(ls /etc/rc.d/rc3.d);do if [[ "$fname" =~ ^[kK].* ]];then echo "$fname stop" elif [[ "$fname" =~ ^[sS].* ]];then echo "$fname start" fi done [root@centos7 bin]# 答案四: [root@centos7 bin]# cat readnsum.sh #!/bin/bash #name:wangnannan read -p "please input a inter:" int if let $int+0 ;then for i in `seq 1 $int`;do let sum+=$i done else echo "you input is not a integer" exit 22 fi echo "from 1 to $int sum is :$sum" [root@centos7 bin]# 答案5 [root@centos7 until]# cat chengfabiaofor2.sh #!/bin/bash #name:wangnannan for ((i=1;i<=9;i++));do for((j=1;j<=i;j++));do echo -ne "\033[41;41;41;41;32;4m$j*$i=$[j*i]\033[m \t" done echo done [root@centos7 until]# [root@centos7 bin]# cat chengfabiao.sh #!/bin/bash for i in {1..9};do for j in `seq 1 $i `;do echo -e "$j*$i=$[ $i*$j ] \c " done echo -e "\n" done [root@centos7 bin]#
while循环
循环格式 while 条件;do 循环语句 done 循环机制: 循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“ false”终止循环 因此: CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正 循环要素: 进入循环:条件为真 退出循环:条件为假 while循环特殊格式 while read line;do 循环体 done < /path/somefile 循环机制:依次读取somefile文件中的每一行,将值赋给line 变量
until循环
until CONDITION; do
循环体
done
进入条件: CONDITION 为false
退出条件: CONDITION 为true
循环控制语句:
continue:退出当次循环 break:退出整个循环
创建无线循环
while true ;do
循环语句
done
until false ;do
循环语句
done
原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/37456