for 循环用法

for循环结构

语法1、

for 变量名 in 变量取值列表

do

指令集

done

提示:在此结构中“in 变量取值列表 ”可省略,省略时相当于in “[email protected]” 使用for i 就相当于使用 for i in "[email protected]"

=========================

语法2、 类似C语言

for ((表达式1;表达式2;表达式3))

do

指令集

done

其中表达式1是初始变量

表达式2是条件,如果这个条件成立就,执行循环指令集

表达式3是对表达式2的变量等进行操作,如自增,自减等

=========================

范例1. 轮询打印下面名称

[[email protected] 03]# cat for.sh                         |||

#!/bin/sh                                          |||

for i in lvnian01 lvnian02 lvnian03 lvnian04       |||

do                                                 |||

echo $i                                            |||

done                                               |||

[[email protected] 03]# sh for.sh                          |||

lvnian01                                           |||

lvnian02                                           |||

lvnian03                                           |||

lvnian04                                           |||

[[email protected] 03]#                                    |||

===========================                        |||

[[email protected] 03]# cat for.sh

#!/bin/sh

for i in `seq 10 20 100`

do

echo $i

done

##seq 上面的 第一个数字是初始值,第二个是间隔,第三个最大值,意思是从10开始输出,输出间隔为20,输出的最大值不能超过100

[[email protected] 03]# sh for.sh

10

30

50

70

90

[[email protected] 03]#

##################################################

范例2.开发脚本实现进设置开机自启动sshd rsyslog crond network sysstat等服务。

[[email protected] 03]# cat for.sh

#!/bin/sh

for a in `chkconfig --list|awk ‘{print $1}‘`

do

/sbin/chkconfig $a off

/sbin/chkconfig --list $a

done

for i in sshd rsyslog crond network sysstat

do

/sbin/chkconfig $i on

/sbin/chkconfig --list $i

done

[[email protected] 03]# sh for.sh

abrt-ccpp       0:off   1:off   2:off   3:off   4:off   5:off   6:off

abrt-oops       0:off   1:off   2:off   3:off   4:off   5:off   6:off

abrtd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

acpid           0:off   1:off   2:off   3:off   4:off   5:off   6:off

......

......

sshd            0:off   1:off   2:off   3:off   4:off   5:off   6:off

svnserve        0:off   1:off   2:off   3:off   4:off   5:off   6:off

sysstat         0:off   1:on    2:off   3:off   4:off   5:off   6:off

udev-post       0:off   1:on    2:off   3:off   4:off   5:off   6:off

sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off

crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off

network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off

[[email protected] 03]#

#######################################

范例3

求1+2+3+..+100和1+2+3+..+n之和

[[email protected] 03]# cat for.sh

#!/bin/sh

for i in `seq 100`

do

let sum=sum+i

done

echo $sum

echo "=================="

for ((i=1;i<=$1;i++))

do

let sum1=sum1+i

done

echo $sum1

[[email protected] 03]# sh for.sh 10

5050

==================

55

[[email protected] 03]#

#######################################

范例4

批量在data目录下处理10个文件 touch1-10

[[email protected] 03]# cat for.sh

#!/bin/sh

[ ! -d ./data ] && mkdir ./data -p && cd ./data

for i in `seq 10`

do

touch lvnian$i

done

[[email protected] 03]#

====

[[email protected] 03]# ls

for.sh  for01.sh  for02.sh  for03.sh  for04.sh  ran.sh  ziqidong.sh

[[email protected] 03]# sh for.sh

[[email protected] 03]# ls

data  for.sh  for01.sh  for02.sh  for03.sh  for04.sh  ran.sh  ziqidong.sh

[[email protected] 03]# ls data/

lvnian1  lvnian10  lvnian2  lvnian3  lvnian4  lvnian5  lvnian6  lvnian7  lvnian8  lvnian9

[[email protected] 03]#

#######################################

范例5

把上面的文件名lvnian全部修改成xiaogao

[[email protected] 03]# cat for.sh

#!/bin/sh

cd ./data

for i in `ls ./`

do

mv $i  `echo $i | sed ‘s/lvnian/xiaogao/‘`

done

[[email protected] 03]# ls data/

lvnian1  lvnian10  lvnian2  lvnian3  lvnian4  lvnian5  lvnian6  lvnian7  lvnian8  lvnian9

[[email protected] 03]# sh for.sh

[[email protected] 03]# ls data/

xiaogao1  xiaogao10  xiaogao2  xiaogao3  xiaogao4  xiaogao5  xiaogao6  xiaogao7  xiaogao8  xiaogao9

[[email protected] 03]#

#######################################

范例6

批量创建N个系统用户用户为user1-N,N是传参,你需要多少个用户N就是多少。密码是随机的10位任意字符。把账号和密码放在user.log文件中

[[email protected] 03]# cat for.sh

#!/bin/sh

num=$1

for n in `seq $num`

do

useradd user${n}

lvnian=`cat /dev/urandom |head -1|md5sum |cut -c 11-20 `

echo lvnian | passwd --stdin user${n}

echo "user${n} : --------------> $lvnian" >> user.log

done

[[email protected] 03]#

[[email protected] 03]# cat user.log

user1 : --------------> a1c15b266d

user2 : --------------> c4fc6b0c66

user3 : --------------> 22bd804b11

user4 : --------------> 8f1313bfa8

user5 : --------------> 0f14a7eba1

user6 : --------------> 1aa00f757f

user7 : --------------> eb7feb075e

user8 : --------------> fc8336e658

user9 : --------------> 24748ac3bf

user10 : --------------> 3b7f6ca3f0

#######################################

时间: 2024-08-06 15:42:33

for 循环用法的相关文章

Sql server存储过程中常见游标循环用法

原文:Sql server存储过程中常见游标循环用法 用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELECT A1,A2,A3 FROM YOUTABLENAME OPEN YOUCURNAME fetch next from youcurname into @a1,@a2,@a3 while

增强for循环用法___ArrayList数组实现使用下标最好,LinkedList使用增强型的(转载)

总结: 1.For-Each循环的缺点:丢掉了索引信息. 当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息. 增强for循环用法 1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的, 但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容.不能获取下标等.2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环.

Django template for 循环用法

当列表为空或者非空时执行不同操作: {% for item in list %} ... {% empty %} ... {% endfor %} 使用forloop.counter访问循环的次数,下面这段代码依次输出循环的次数,从1开始计数: {% for item in list %} ... {{ forloop.counter }} ... {% endfor %} 从0开始计数: {% for item in list %} ... {{ forloop.counter0 }} ...

smarty模板section循环用法

{foreach name=foreach_name key=k item=v from=$arr} {$k}=>{$v}<br/> {/foreach} {section name=sec_name loop=$arr start=0 step=n max= m show=true/false } {if is_array($arr[sec_name])} {section name=sec2 loop=$arr[sec_name]} {$arr[sec_name][sec2]}<

java outterLoop跳出多重循环用法以及详解

List<CommResultMsg> listresult=new ArrayList<CommResultMsg>(); outterLoop :for (int i = 0; i < model.size()-1; i++) { for (int j = model.size()-1; j > i; j--) { if (model.get(j).getLoaneeApplyId()==model.get(i).getLoaneeApplyId()) { resu

while 循环用法

while 循环 1.while 条件句 语法 while 条件 do 指令集 done ########################### 2.until 条件句 utill 条件 do 指令集 done ########################## 范例1 每个5秒查看一下系统的负载情况 [[email protected] 02]# vi while.sh #!/bin/sh while true do uptime  >> uptime.log sleep 5 done [

Java for循环用法

Java中for循环多了一种写法--foreach写法(一般仅仅用于遍历整个数组,不用操心越界等问题). 1.1)常规写法: package foreach.main.sn; public class Foreach { public static void main(String[] args) { int[] arr = {1,2,3,4,5}; for (int i = 0; i < arr.length; ++i){ System.out.println(arr[i]); } } } 1

bash while until 循环用法

首先, bash中命令执行成功返回状态码 0, 失败返回非0状态码(以下$是终端提示符) $ true; echo $? 0 $ false; echo $? 1 1. while $ while true; do echo good; break; done good $ while [ 1 -eq 1 ]; do echo good; break; done good $ while ps -ef | grep grep; do echo good; break; done good 2.

内外层循环用法

3个班级各4名学员参赛,计算每个班级参赛学员平均分,统计成绩大于85分学员总数思路: 外层循环控制班级 内层循环控制某个班级的每名学生成绩 成绩不大于85,sum++ 成绩大于85,count 1 int count=0; 2 int avg; 3 Scanner input=new Scanner(System.in); 4 for(int i=1;i<4;i++) 5 { 6 int sum=0;//没班级开始总成绩清零 不至于叠加 7 for(int j=1;j<5;j++) 8 { 9