标签:pre perl 开发 简单 pos style 复杂 嵌套 for循环
使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象。缺点是:它们的效率通常不如编译型语言。不过权衡之下,通常使用脚本编程还是值得的:花一个小时写成的简单脚本,同样的功能用C或C++来编写实现,可能需要两天,而且一般来说,脚本执行的速度已经够快了,快到足以让人忽略它性能上的问题。脚本编程语言的例子有awk、Perl、Python、Ruby与Shell。
因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。因此,之所以要使用Shell脚本是基于: 简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。 可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。 开发容易:可以在短时间内完成一个功能强大又妤用的脚本。
脚本大都为过程式编程语言: 顺序执行 选择执行 循环执行。
下边将列出常用命令和其用法:
条件选择if语句:
选择执行: 注意:if语句可嵌套 双分支写法:
1 if 条件; then 2 Command 3 else 4 Command 5 fi #别忘了这个结尾
多分支写法:
多分支 if 判断条件1; then 条件为真的分支代码 elif 判断条件2; then 条件为真的分支代码 elif 判断条件3; then 条件为真的分支代码 else 以上条件都为假的分支代码 fi 逐条件进行判断,第一次遇为“真”条件时,执行其分支, 而后结束整个if语句
条件判断:case语句
case 变量引用 in PAT1) 分支1 ;; PAT2) 分支2 ;; ... *) 默认分支 ;; esac case支持glob风格的通配符: *: 任意长度任意字符 ?: 任意单个字符 []:指定范围内的任意单个字符 a|b: a或b
循环:for, while, until
for循环 for 变量名 in 列表;do 循环体 done 执行机制: 依次将列表中的元素赋值给“变量名”; 每次赋值后即执 行一次循环体; 直到列表中的元素耗尽,循环结束
while循环:
while CONDITION; do 循环体
done
CONDITION:循环控制条件;进入循环之前,先做一次判
断;每一次循环之后会再次做判断;条件为“true”,则执行
一次循环;直到条件测试状态为“false”终止循环
因此:CONDTION一般应该有循环控制变量;而此变量的值
会在循环体不断地被修正
进入条件:CONDITION为true
退出条件:CONDITION为false
until循环:
until CONDITION; do 循环体 done 进入条件: CONDITION 为false
退出条件: CONDITION 为true
循环控制语句continue:
用于循环体中 #break 和continue 用法大致一样,break跳出所有循环,continue用于仅跳出所在一层的循环。 continue [N]:提前结束第N层的本轮循环,而直接进入下一 轮判断;最内层为第1层 while CONDTIITON1; do CMD1 ... if CONDITION2; then continue fi CMDn ... done
循环控制shift命令:
shift [n] 用于将参量列表 list 左移指定次数,缺省为左移一次。 参量列表 list 一旦被移动,最左端的那个参数就从列表中删 除。while 循环遍历位置参量列表时,常用到 shift ./doit.sh a b c d e f g h ./shfit.sh a b c d e f g h
创建无限循环:
while true; do 循环体 done until false; do 循环体 Done
select循环与菜单:
select variable in list do 循环体命令 done select 循环主要用于创建菜单,按数字顺序排列的 菜单项将显示在标准错误上,并显示 PS3 提示符, 等待用户输入 用户输入菜单列表中的某个数字,执行相应的命令 用户输入被保存在内置变量 REPLY 中
select与case:
select 是个无限循环,因此要记住用 break 命令退 出循环,或用 exit 命令终止脚本。也可以按 ctrl+c 退出循环 select 经常和 case 联合使用 与 for 循环类似,可以省略 in list,此时使用位置 参量
标签:pre perl 开发 简单 pos style 复杂 嵌套 for循环
原文地址:http://www.cnblogs.com/chenyongmou/p/7436555.html