书写优雅的shell脚本-if语句

书写优雅的shell脚本-if语句

ID:8827594

大小:16.30 KB

页数:3页

时间:2018-04-08

书写优雅的shell脚本-if语句_第1页
书写优雅的shell脚本-if语句_第2页
书写优雅的shell脚本-if语句_第3页
资源描述:

《书写优雅的shell脚本-if语句》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、书写优雅的shell脚本(一)-if语句  使用unix/linux的程序人员几乎都写过shell脚本,但这其中很多人都是为了完成功能而在网上找代码段,这样写出来的shell脚本在功能方面当然是没有什么问题,但是这样的方式不能写出优雅的shell脚本。  从今天开始,starfe就将自己平时在书写shell脚本过程中的经历做一总结,力图形成一个系列---“书写优雅的shell脚本”。  在此,对“优雅”一词的定义有4点:(1)健壮;(2)结构清晰;(3)性能好;(4)力求简单。  好了,废话不多说,开始今天的主题:if语句  1.if判断式  (1)  if[条件判断一]&&(

2、

3、)[条

4、件判断二];then  xxx  fi  (2)  if[条件判断一]&&(

5、

6、)[条件判断二];then  xxx  else  xxx  fi  (3)  if[条件判断一]&&(

7、

8、)[条件判断二];then  xxx  elif[条件判断三]&&(

9、

10、)[条件判断四];then  xxx  ...  else  xxxx  fi  2.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

11、]  -le小于等于,如:if[$a-le$b]  >大于,如:[$a>$b]  >=大于等于,如:[$a>=$b]  注:以上其实不是健壮的代码,上面这些代码在有些情况下会存现错误提示,而真正健壮的是使用双括号来表示,即if[[$a-eq$b]]  这是为何?做个测试如下:  $>a=;b=3;  $>if[a-gt$b];thenecho"true";fi  -bash:[:-gt:unaryoperatorexpected//报错  而改为$>if[[a>3]];thenecho"true";fi//不再报错,这也是我们所期望的  究其原因,是因为如果变量a值为空(由于shell是

12、弱类型语言,对变量赋值都是当字符串对待),那么就成了[-gt3],显然[和$b不相等并且缺少了[符号,所以报了这样的错误。当然不总是出错,如果变量a值不为空,程序就正常了,所以这样的错误还是很隐蔽的。  或者用下面的方法也能避免这种错误:if["$a"x-gt"$b"x];thenecho"true";fi。当然,x也可以是其他字符。新濠天地娱乐城66bb.org顺便提一点,shell中有没有双引号在很多情况下是一致的。  2.2字符串比较  等于,如:if[$a=$b]或if[$a==$b],与=等价  不等于,如:if[$a!=$b]  大于,在ASCII字母顺序下.如:if[$a

13、>$b]  小于,在ASCII字母顺序下.如:if[$a<$b]注意:要使用转义符“”。  2.3文件比较  [  文件1-nt文件2]为真如果文件1hasbeenchangedmorerecentlythan文件2,or如果文件1存在而且文件2  doesnot。  [文件1-ot文件2]为真如果文件1比文件2旧,或者文件2存在而且  文件1不存在。  [文件1-ef文件2]为真如果文件1而且文件2refertothe  samedevice而且inodenumbers。  2.4表达式比较  [表达式1  -a表达式2]如果表达式1而且表达式2同时为真则为真。  [表达式1-o表

14、达式2]如果表达式1或者表达式2其中之一为真则为真。  3.if中的一元比较  [-a文件]如果文件存在为真。  [-b文件]如果文件存在而且是一个块-特殊文件为真。  [-c文件]为真如果文件存在而且是一个字-特殊文件。  [-d文件]为真如果文件存在而且是一个目录。  [-e文件]为真如果文件存在。  [-f文件]为真如果文件存在而且是一个普通文件。  [-g文件]为真如果文件存在而且已经设置了他的SGID位。  [-h文件]为真如果文件存在而且是一个符号连接。  [-k文件]为真如果文件存在而且他的粘住位已经设置。  [-p文件]为真如果文件存在而且是一个已经命名的管道(F如果O)

15、。  [-r文件]为真如果文件存在而且是可读的。  [-s文件]为真如果文件存在而且比零字节大。  [-tFD]为真如果文件文件描述符已经打开而且指向一个终端。  [-u文件]为真如果文件存在而且已经设置了他的SUID(setuserID)位。  [-w文件]为真如果文件为真如果文件存在而且是可写的。  [-x文件]为真如果文件存在而且是可执行的。  [-O文件]为真如果文件存在而且属于有效用户ID。  [-G文件]为真如果文件存在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。