以上代码列出在 /etc 中每个以 "r" 开头的文档。要做到这点,bash 在执行循环之前首先取得通配符 /etc/r*,然后扩展他,用字符串 /etc/rc.d /etc/resolv.conf /etc/resolv.conf~ /etc/rpc 替换。一旦进入循环,根据 myfile 是否为目录,"-d" 条件运算符用来执行两个不同操作。假如是目录,则将 "(dir)" 附加到输出行。
还能够在字列表中使用多个通配符、甚至是环境变量:
|
Bash 将在任何正确位置上执行通配符和环境变量扩展,并可能创建一个很长的字列表。
虽然任何通配符扩展示例使用了 绝对路径,但也能够使用相对路径,如下所示:
|
在上例中,bash 相对于当前工作目录执行通配符扩展,就象在命令行中使用相对路径相同。研究一下通配符扩展。您将注意到,假如在通配符中使用绝对路径,bash 将通配符扩展成一个绝对路径列表。否则,bash 将在后面的字列表中使用相对路径。假如只引用当前工作目录中的文档(例如,假如输入 "for x in *"),则产生的文档列表将没有路径信息的前缀。请记住,能够使用 "basename" 可执行程式来除去前面的路径信息,如下所示:
|
当然,在脚本的命令行自变量上执行循环通常很方便。这里有一个如何使用本文开始提到的 "$@" 变量的例子:
|
Shell 算术
在学习另一类型的循环结构之前,最好先熟悉如何执行 shell 算术。是的,确实如此:能够使用 shell 结构来执行简单的整数运算。只需将特定的算术表达式用 "$((" 和 "))" 括起,bash 就能够计算表达式。这里有一些例子:
|
更多的循环结构:"while" 和 "until"
只要特定条件为真,"while" 语句就会执行,其格式如下:
|
通常使用 "While" 语句来循环一定次数,比如,下例将循环 10 次:
|
能够看到,上例使用了算术表达式来使条件最终为假,并导致循环终止。
"Until" 语句提供了和 "while" 语句相反的功能:只要特定条件为 假 ,他们就重复。下面是个和前面的 "while" 循环具备同等功能的 "until" 循环:
|
Case 语句
Case 语句是另一种便利的条件结构。这里有一个示例片段:
|
在上例中,bash 首先扩展 "$"。在代码中,"$x" 是文档的名称,"$" 除去文档中最后句点后文本之外的任何文本。然后,bash 将产生的字符串和 ")" 左边列出的值做比较。在本例中,"$" 先和 "gz" 比较,然后是 "bz2",最后是 "*"。假如 "$" 和这些字符串或模式中的任何一个匹配,则执行紧接 ")" 之后的行,直到 ";;" 为止,然后 bash 继续执行结束符 "esac" 之后的行。假如不匹配任何模式或字符串,则不执行任何代码行,在这个特别的代码片段中,至少要执行一个代码块,因为任何不和 "gz" 或 "bz2" 匹配的字符串都将和 "*" 模式匹配。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




