1.linux shell for循环怎么写
试读结束,如需阅读或下载,请点击购买>
原发布者:王晓波
Linuxshellfor循环语句Shell中的for循环语句与一般编程语言里的for语句有些不同,在shell中,for的作用是对一组参数都执行一个操作。其语法形式为:forcurvarinlistdostatementsdone列表是在for循环的内部要操作的对象,它们可以是字符串。如果它们是文件,那么这些字符串就是文件名。变量curvar是在循环内部用来指代当前所指列表中的对象的。如果希望对List中的每个值都执行一次statements,可以使用这种格式。在每一次循环中,将List中的当前值赋给curvar。list可以是包含一组元素的变量或者是用空格分开的值列表。for语句的第2种格式为:forcurvardostatementsdone在这种形式中,对传递给shell程序的每个位置参数执行statements一次。在每次循环中,将位置参数的当前值赋给变量curvar。这种格式也可以写成如下所示的形式:forcurvarin$@dostatementsdone这里的$@是传递给shell程序的位置参数列表,引用的方式与用户初始调用命令时一致。下面的shell脚本将使用for循环依次显示列表中5个变量的值,假定这些脚本位于当前用户的工作目录root/look中,其文件名为test5,内容如图15所示。在该程序的for语句中,首先定义了一个名为var的变量,它的值依次是:one、two、three、four和five。因为有5个变量值,所以do和done之间的命令会被循环执行5次。在命令行中执行该程序,结果如图16所示:
2.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循环创建文件夹测试结果:12345678910111213141516171819202122232425[root@test01 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[root@test01 kuangl]# cd aaa1[root@test01 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计算该目录占用磁盘空间的大小。测试结果:12345678910111213141516171819202122[root@test01 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 pleted"
fi
}
改成下面的内容试下
转载请注明出处育才学习网 » shellfor循环怎么写