第3章 shell结构化命令------------(for命令与使用实例)

来源:互联网 发布:武汉java 开发前景 编辑:程序博客网 时间:2024/05/22 12:32

3.4  for命令

         重复一系列的命令是一种常见的变成实践。通常需要重复一组命令直到满足一个特定的条件。bash shell提供for命令,用于创建通过一系列值重复的循环。每次重复使用系列中的一个值执行一个定义的命令集。

         bash shell for命令的基本格式如下:          

for var in listdo      commandsdone

         在参数list中提供一系列用于迭代的值。指定列表中的值有几种不同的方法。在每次迭代中,变量var包含列表的当前值。第一次迭代使用列表中的第一项,第二次迭代使用第二项,依次类推直到列表中的所有项都被使用为止。

         进入do和done语句之间的命令可以是一条或多条的标准bash shell命令。在命令中,变量$var 包含当前迭代的列表项值。如果愿意,可以将do语句与for语句放在同一行,但是必须使用分号将它与列表项分开:for var in list ; do。

3.4.1 读取列表

         for命令的最基本使用方法是通过在for命令中定义一列值来迭代。每次for命令通过提供的值列表进行迭代时,它将列表中的下一个值赋值给变量。最后一次迭代之后,变量在shell脚本的其他部分中任然有效,它仍然是迭代的最后一个值

         当shell看到列表值当中的单引号,并试图用它们来定义一个单独的数据值,它破坏了list中的过程。有两种方法解决这个问题:

Ø  使用转义字符(\)来转义单引号

Ø  使用双引号来定义使用单引号的值

         这两种方法都可以解决列表中存在单引号和双引号的问题。

         另一个问题是运行多字值。for循环认为每个值都用空格分隔,如果包含空格的数据值,就遇到另一个问题。如果在个别的数据值中有空格,必须使用双引号将它们包围起来使用双引号包围值时,shell不会将双引号作为值的一部分

#!/bin/bash#for命令读取列表for fl in $HOME/*do  echo $fldoneecho "for var in list;do"for fl in $HOME/*;do  echo $fldoneecho "list中带有单引号"for wd in I don't know if this'll workdo  echo $wddoneecho "list中使用转义字符!"for wd in I don\'t know if "this'll" workdo  echo $wddoneecho "list中带有空格!"for city in Nevade New Hampshire New Mexico New York North Carolinado  echo $citydoneecho "对list表中在一起的使用双引号!"for city in Nevade "New Hampshire" "New Mexico" "New York" "North Carolina"do  echo $citydone

0 0
原创粉丝点击