[计算机]脚本常用套路详解1.docVIP

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机]脚本常用套路详解1

脚本常用套路详解(以下总结仅供参考) 关于bash编程, 每个人都有自己的一套, 但目的都是一样的: 正确、安全、高效、低耗、工整的完成任务, 同时,有更好的扩展性、调式性 所以,总结一些乱七八糟的, 仅供真正喜欢bash的人参考之用, 以下总结如有雷同,无尚荣兴 2007-02-12 by wwy Index 脚本编写的结构 定义变量(包含eval命令用法) 循环遍历 逻辑结构 信息的传递 配置文件的处理 为了安全 8、编程风格 9、浅谈IO 10、vim杂项 11、bash部分内建命令总结 12、其他杂项 1、脚本编写的结构 Bash是一个纯面向过程的编程语言,而又区别与某些其他语言, 区别就是,是从上到下顺序执行的,是一种脚本语言 所以,基本的结构就是: 变量定义 --- 函数定义 --- 循环、逻辑判断 结构看起来比较简单,但是严格遵守却比较难, 会因为脚本比较简单、改来改去等,忽略了这个简单的基本规则 不是用这样结构的隐患在于: 外部变量与函数变量冲突 脚本修改容易出错 变量的遗漏等等 然而,这不是绝对的,打破这个规则的理由: 1、有明显的逻辑判断,而剩去大量的,没意义的函数、变量定义 2、可以避免变量冲突 3、脚本太简单 4、有自己编程风格等等 2、定义变量 eval的应用,可以实现变量的自动化定义, 先看这个例子: [root@fxstest1 ~]# echo pwd pwd # “pwd”是随便的一个字符串,打到stdout上 [root@fxstest1 ~]# eval `echo pwd` # 注意echo命令两边是反引号 /home/wwy # 此时,pwd不再是字符串,而是一个命令 所以,同理可以自动定义变量, 例如:定义变量$a,$b,$c,$d,$e,$f的值分别为1,2,3,4,5,6 做法: [root@fxstest1 ~]# seq 0 5 | tr [0-9] [a-z] | awk {i++;print $1=i} # 以下是这个命令的输出结果 a=1 b=2 c=3 d=4 e=5 f=6 [root@fxstest1 ~]# eval `seq 0 5 | tr [0-9] [a-z] | awk {i++;print $1=i}` # eval `(反引号)命令`(反引号),这样之后,将以上命令的输出自动执行 [root@fxstest1 ~]# echo $a $b $c $d $e $f 1 2 3 4 5 6 # 此时发现,变量已经被自动附值了 此种做法当然不是为偷懒,或故意让人迷惑, (耍酷的成份有一点,如果你认为这也算“酷”的话) 真正的力量在于,自动的、快速的,生成数据结构, 生成数组的例子: [root@fxstest1 ~]# eval `awk -F: {print $1=($1,$(NF-1),$NF)} /etc/passwd` # 上面这句命令,将passwd文件做成了一个数组, # 数组名是各个用户名,各个数组的内容分别是用户名、数组目录、login shell [root@fxstest1 ~]# echo ${wwy[@]} # 输出wwy这个数组的内容 wwy /home/wwy /bin/bash [root@fxstest1 ~]# echo ${wwy[1]} # 随意的输出wwy这个数组的某个值 /home/wwy (关于具体的数据结构应用,可以参考“汇率检查脚本”那个文档) 引入外部文件,也是定义变量的一个方法,也常用于引入函数 (关于具体的应用,可以参考“批处理检查脚本”那个文档) 3、循环遍历 循环的操作,直接决定了脚本的效率性能,也存在很多的技巧 (以下都是处理一些效率相关的问题,而并非逻辑问题) 1、for循环 在语法上,for循环有两种,即 for in循环与for do循环, 两者相比,for in循环偏向于in后面的读取,for do循环则偏向于数据的遍历 所以,一般来说,for in用于读文件等操作,在效率上表现的比较好, 用法: for line in `cat file.txt`;do # 与cat命令连用这种方式 echo $line # 将每一行的结果存入$line变量内,由echo命令处理 done 而for do循环的遍历能力是很强的, 用法1: for ((i=0;i10;i++));do # 根据不同的算法,随意改变 $i的初始值、累加值等 echo $i done # 输出0到9,10个数 用法2: a=(A B C D E F) for ((i=0;i${#a[@]};i++));do echo ${a[$i]} done # 输出a数组的所有内容 (关于具体的数据

文档评论(0)

skvdnd51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档