1.shell里的for循环怎么写for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done 之间),直到所有元素取尽为止 。
其中,串行是一些字符串的组合,彼此用$IFS所定义的分隔符(如空格符)隔开,这些字符串称为字段 。for的语法结构如下:1234for 变量 in 串行do 执行命令done说明: 行1,讲串行中的字段迭代放入变量中 行2-4,接着将重复执行do和done之间的命令区域,直到串行中每一个字段军处理过为止 。
流程图:用例1 用for循环在家目录下创建aaa1-aaa10,然后在aaa1-aaa10创建bbb1-bbb10的目录123456789101112#!/bin/bashfor k in $( seq 1 10 )do mkdir /home/kuangl/aaa${k} cd /home/kuangl/aaa${k} for l in $( seq 1 10 ) do mkdir bbb${l} cd /home/kuangl/aaa${k} done cd ..done说明: 行2,seq 用于产生从某个数到另外一个数之间的所有整数 。行4,在家目录下创建文件夹 。
行6,在使用一个for循环创建文件夹测试结果:[[email protected] kuangl]# lltotal 80drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa1drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa10drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa2drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa3drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa4drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa5drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa6drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa7drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa8drwxr-xr-x 12 root root 4096 Jul 20 01:23 aaa9[[email protected] kuangl]# cd aaa1[[email protected] aaa1]# lltotal 40drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb1drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb10drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb2drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb3drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb4drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb5drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb6drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb7drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb8drwxr-xr-x 2 root root 4096 Jul 20 01:23 bbb91用例2 列出var目录下各子目录占用磁盘空间的大小 。1234567#!/bin/bashDIR="/var"cd $DIRfor k in $(ls $DIR)do [ -d $k ] && du -sh $kdone说明: 行4,对/var目录中每一个文件,进行for循环处理 。
行6,如果/var下的文件是目录,则使用du -sh计算该目录占用磁盘空间的大小 。测试结果:[[email protected] scripts]# ./var.sh276M cache4.0K cvs84K db8.0K empty4.0K ftp4.0K games4.0K gdm21G lib4.0K local16K lock7.4G log4.0K logs0 mail4.0K nis4.0K opt4.0K preserve336K run3.7G spool212K tmp4.1G e $varible1 times "donedo和done之间的命令称为循环体,执行次数和list列表中常数或字符串的个数相同 。for循环,首先将in后list列表的第一个常数或字符串赋值给循环变量,然后执行循环体,以此执行list,最后执行done命令后的命令序列 。
Sheel支持列表for循环使用略写的计数方式,1~5的范围用{1..5}表示(大括号不能去掉,否则会当作一个字符串处理) 。Sheel中还支持按规定的步数进行跳跃的方式实现列表for循环,例如计算1~100内所有的奇数之和 。
#!/bin/bashsum=0for i in {1..100..2}dolet "sum+=i"doneecho "sum=$sum" 通过i的按步数2不断递增,计算sum值为2500 。同样可以使用seq命令实现按2递增来计算1~100内的所有奇数之和,for i in $(seq 1 2 100),seq表示起始数为1,跳跃的步数为2,结束条件值为100 。
for循环对字符串进行操作,例如通过for循环显示当前目录下所有的文件 。#!/bin/bashfor file in $( ls )#for file in *doecho "file: $file"done 也可一使用for file in *,通配符*产生文件名扩展,匹配当前目录下的所有文件 。
for通过命令行来传递脚本中for循环列表参数#!/bin/bashecho "number of arguments is $#"echo "What you input is: "for argument in "[email protected]"doecho "$argument"done$#表示参数的个数,[email protected]表示参数列表而$*则把所有的参数当作一个字符串显示 。(3)不带列表for循环 由用户制定参数和参数的个数,与上述的for循环列表参数功能相同 。
- boys的音标怎么写
- android倒计时器怎么写
- android删除代码怎么写
- 转行web简历怎么写
- 英文的title怎么写
- 名片上博士头衔怎么写
- 技术团队介绍怎么写
- 飞机的英语单数怎么写
- 单位开员工死亡证明怎么写
- thinkphp类怎么写