


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
书写优雅的shell脚本(一)- if语句使用unix/linux的程序人员几乎都写过shell脚本,但这其中很多人都是为了完成功能而在网上找代码段,这样写出来的shell脚本在功能方面当然是没有什么问题,但是这样的方式不能写出优雅的shell脚本。从今天开始,starfe就将自己平时在书写shell脚本过程中的经历做一总结,力图形成一个系列-“书写优雅的shell脚本”。在此,对“优雅”一词的定义有4点:(1)健壮;(2)结构清晰;(3)性能好;(4)力求简单。好了,废话不多说,开始今天的主题:if语句1. if判断式(1)if 条件判断一 &(|) 条件判断二 ; thenxxxfi(2)if 条件判断一 &(|) 条件判断二 ; thenxxxelsexxxfi(3)if 条件判断一 &(|) 条件判断二 ; thenxxxelif 条件判断三 &(|) 条件判断四 ; thenxxx.elsexxxxfi2. if中的二元比较2.1 整数比较-eq 等于,如:if $a -eq $b -ne 不等于,如:if $a -ne $b -gt 大于,如:if $a -gt $b -ge 大于等于,如:if $a -ge $b -lt 小于,如:if $a -lt $b -le 小于等于,如:if $a -le $b 大于,如: $a $b = 大于等于,如: $a = $b 注:以上其实不是健壮的代码,上面这些代码在有些情况下会存现错误提示,而真正健壮的是使用双括号来表示,即if $a -eq $b 这是为何?做个测试如下:$a=;b=3;$if a -gt $b ; then echo true;fi-bash: : -gt: unary operator expected /报错而改为$if a 3 ; then echo true;fi /不再报错,这也是我们所期望的究其原因,是因为如果变量a值为空(由于shell是弱类型语言,对变量赋值都是当字符串对待),那么就成了 -gt 3 ,显然 和 $b 不相等并且缺少了 符号,所以报了这样的错误。当然不总是出错,如果变量a值不为空,程序就正常了,所以这样的错误还是很隐蔽的。或者用下面的方法也能避免这种错 误:if $ax -gt $bx ; then echo true; fi。当然,x也可以是其他字符。新濠天地娱乐城66 顺便提一点,shell中有没有双引号在很多情况下是一致的。2.2 字符串比较等于,如:if $a = $b 或if $a = $b ,与=等价不等于,如:if $a != $b 大于,在ASCII字母顺序下.如:if $a $b 小于,在ASCII字母顺序下.如:if $a $b 注意:要使用转义符“”。2.3 文件比较文件1 -nt 文件2 为真 如果 文件1 has been changed more recently than 文件2, or 如果文件1 存在 而且文件2does not。 文件1 -ot 文件2 为真 如果 文件1 比 文件2 旧, 或者 文件2 存在而且文件1 不存在。 文件1 -ef 文件2 为真 如果 文件1 而且 文件2 refer to thesame device 而且 inode numbers。2.4 表达式比较 表达式1-a 表达式2 如果表达式1 而且表达式2 同时为真则为真 。 表达式1 -o 表达式2 如果表达式1 或者表达式2 其中之一为真则为真。3.if中的一元比较 -a 文件 如果文件存在为真。 -b 文件 如果 文件 存在 而且 是一个 块-特殊 文件为真。 -c 文件 为真 如果 文件 存在 而且 是一个 字-特殊 文件。 -d 文件 为真 如果 文件 存在 而且 是一个 目录。 -e 文件 为真 如果 文件 存在。 -f 文件 为真 如果 文件 存在 而且 是一个 普通 文件。 -g 文件 为真 如果 文件 存在 而且 已经设置了他的 SGID 位。 -h 文件 为真 如果 文件 存在 而且 是一个 符号连接。 -k 文件 为真 如果 文件 存在 而且 他的粘住位已经设置。 -p 文件 为真 如果 文件 存在 而且 是一个 已经命名的管道 (F 如果O)。 -r 文件 为真 如果 文件 存在 而且 是可读的。 -s 文件 为真 如果 文件 存在 而且 比零字节大。 -t FD 为真 如果 文件 文件描述符已经打开 而且 指向一个终端。 -u 文件 为真 如果 文件 存在 而且 已经设置了他的 SUID (set user ID)位。 -w 文件 为真 如果 文件 为真 如果 文件 存在 而且 是可写的。 -x 文件 为真 如果 文件 存在 而且 是可执行的。 -O 文件 为真 如果 文件 存在 而且 属于有效用户ID。 -G 文件 为真 如果 文件 存在 而且 属于有效组ID。 -L 文件 为真 如果 文件 存在 而且 是一个 符号连接。 -N 文件 为真 如果 文件 存在 而且 has been mod 如果ied since it was last read。 -S 文件 为真 如果 文件 存在 而且 是一个 socket。 -o 选项名 为真 如果 shell 选项 选项名 开启。 -z STRING
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解析卷-山东省乐陵市7年级上册期末测试卷专项练习试题(含答案及解析)
- 2026届山西省吕梁市汾阳中学化学高三上期中联考试题含解析
- 2026届河南上蔡第一高级中学高一化学第一学期期末复习检测模拟试题含解析
- 外卖店 劳务合同范本
- 济南市2025-2026学年九年级上学期语文期末模拟试卷
- 高速铁路运输
- 高速路机电基础知识培训课件
- 高速收费站文明服务课件
- 松材线虫病防治服务投标方案
- siyb考试题及答案
- 乡村振兴项目规划建设与运营方案
- 驾驶员服务外包合同范本
- 实际控制人证明书
- 电机成品检验报告
- 如何提高现场管理能力ppt
- 从力的做功到平面向量数量积说课稿省名师优质课赛课获奖课件市赛课百校联赛优质课一等奖课件
- 部编人教版四年级上册道德与法治全册教案
- 铝合金压铸控制计划模板
- 肿瘤和肾脏病
- 数字电路逻辑设计(第3版)PPT全套完整教学课件
- 工程竣工验收单(简易版)
评论
0/150
提交评论