- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一些很好的shell诀窍
连续循环
现在来看循环,它允许您执行重复任务,比如对一组文件执行一些操作或命令。Shell 有几种构造循环的方法。
构造 for 循环
最常见的循环结构是 for 循环。
首先定义一个变量作为循环的名称,提供一组成员,可以是包括整数和文件名在内的任何单词,然后提供每次重复执行的命令。每个命令都以分号结束 (;),整个命令组以位于单词 do 和 done 之间。清单 20 描述了它的结构。
清单 20. Shell 中循环的结构
for loopname in members
do
command;
command;
...
command;
done
在循环的第一次重复中,loopname 变量获取第一个成员的值。然后 loopname 的值被清单中下一个成员的值替代,接下来它继续重复直到遍历所有成员。
在大多数 Shell 中,do 和 done 都可以被大括号所替代,如清单 21 中所示。清单 21. Shell 循环的替代结构
for loopname in members
{
command;
command;
...
command;
}
键入清单 22 中的文本来运行包含三个成员的简单循环:清单 22. 使用循环来改变变量的值
$ for i in 1 2 3
{
VAR = $(($VAR+$i))
echo $i:$VAR
}
1:1
2:3
3:6
$
针对目录中的每个文件执行命令
您可以使用循环针对给定的一组文件执行一个或一组命令。如果您提供文件的名称作为 for 循环的成员,那么循环按您提供名称的顺序在每个文件上执行操作。您可以两次提供同一个文件,循环将依次对该文件执行操作。在您的 example 目录中尝试使用清单 23 中的文本执行上述操作。
清单 23. 利用一组文件构造循环
$ cd ~/example
$ ls
A B C
$ for file in C B B C
{
echo $file
}
C
B
B
C
$
要对同一目录下的所有文件执行操作,可以使用星号 (*) 作为循环的唯一成员,如清单 24 中所示。Shell 将星号扩展为目录中的所有文件。然后,对于循环中您要对所有文件执行的命令,使用 loopname 变量作为合适的参数或选项。
清单 24. 针对目录中的所有文件执行同一命令
$ ls
A B C
$ for file in *
{
mv $file $((0x$file))
}
$
如果您正在运行本教程中的所有示例,那么您的 example 目录中的内容应该已改变:
$ ls
10 11 12
$
发生的情况是循环中的 mv 命令将文件的名称从十六进制值(通过在名称的前面插入 0x 构成)更改为与它相等的十进制值。
构造 while 循环
您可以构造一种当满足某些条件就一直运行的循环。使用 while 条件语句来实现这一目标,其格式如清单 25 所示。
清单 25. Shell while 循环的结构
while [ condition ]; do
command;
command;
...
command;
done
在循环中,condition 可以是使用操作符(请参见表 3)构建的语句,或者可以像一个变量名那样简单。只要值是非 0 的,就代表真。
表 3. 常用 Shell 操作符
操作符 描述 -eq 等于 -ne 不等于 -lt 小于 -le 小于等于 -gt 大于 -ge 大于等于 构造 while 循环时,有一些注意事项需要牢记在心。首先,在条件与将它括起来的括号之间必须留有空白字符。其次,如果在条件中将变量用于数字比较,那么在 while 语句之前必须首先定义该变量。
键入清单 26 中的文本以执行一个简短的 while 循环:
清单 26. 使用 while 循环更改变量
$ VAR=0
$ while [ $VAR -lt 10 ]; do
echo $VAR;
VAR=$(($VAR+1));
done
0
1
2
3
4
5
6
7
8
9
$
构造 until 循环
until 条件语句与 while 相似并使用相同的操作符,但是它们的行为相反。它只有当条件为假时才执行循环,并且循环持续重复直到 给定的条件为真。它的格式在清单 27 中说明。
清单 27. Shell until 循环的结构
until [ condition ] ; do
command;
command;
...
command;
done
通过键入清单 28 中所示的内容尝试运行一个简短的 until 循环:
清单 28. 使用 until 循环更改变量
$ VAR=10
文档评论(0)