shell script学习(三)判断式的使用:test命令以及[ ]

shell script中的判断式,顾名思义就是判断一个式子是否满足一定的条件。在script中有如下几种实现方式:

1、使用test命令

先举个简单的例子,比如说判断在当前目录下一个文件script1.sh是否存在,那么根据test使用的语法,可写成如下: test -e script1.sh 如果存在的话那么返回的值是1,于是我们结合 && 以及 || 逻辑运算可构造: 

test -e script1.sh && echo "exist" || echo "Not exist"  

如果存在的话,那么会继续进行&&后面的操作,输出"exist"。如果不存在,直接执行 || 后面的操作,输出“Not exist”。

顺便提一句,在script中 && 和 || 的用法和程序设计语言中的用法是相同的。

下面具体来看看test命令对应其它参数时的功能:

一、test  [-efdbcSPL] filename  用来判断一个文件是否存在,以及文件的类型

-f 判断是否是一个文件。 -d 判断是否是一个dictionaty .-b (blocl device设备)-c (character device 设备)

-S (Socket文件) -P(FIFo/pipe文件) -L(link file)

二、test  [-rwx]   filename

判断一个文件的执行权限, -r 判断是否是可读的。-w 判断是否是writable。-x 判断是否是 executable

三、test   file1  { [-nt] [-ot] [-ef] }  file2 

用来判断这两个文件的新旧,其中 -ef用来判断是否是同一文件,或者是否链结到同一个文件。 -nt 是(newer than) 的缩写,所以我们只需要记住缩写就可以了。

四、 test  n1 { [-eq][-ne][-gt][-lt][-ge][-le] } n2 

用来判断两个整数 n1 和 n2 之间的关系  注意 在这种情况下 n1 和 n2 是被作为整数来对待的。当然加双引号也是可以的。

test str1=str2 判断两个string是否相等

test str1!=str2 判断是否不等于


五、test [-zn] string 判断string 是空还是非空

test -z  string  用来判断字符串是否为空

六、 -a 是当两个条件都成立时才返回true.

  -o 是任一个条件成立时返回 true. 

  ! 当其中一个不成立时返回。

下面是一个例子来说明 test 的使用:这个脚本可以用来根据用户输入的文件名判断文件是否存在,以及是属于常规文件还是文档,还可以输出文档的类型。



2、下面来看看通过 “[ ]”怎样来进行判定

[ ] 和test有同样的功能,可以使程序简化,如:

[ "str1" == "str2" ] 可以判断这两个字符串是否相等。

[ -e filename ] 可以判断filename这个文件是否存在。

在使用[ ] 进行判定的时候有一个事项要注意的是,在括号两边以及符号两边均要有空格。下面来看一个例子:这个脚本可以根据用户的输入是 y|Y 或是 n/N 来做判断。


3、下面再来看看shell script 的默认变量 $0, $1, $...

这里讲的是在执行shell脚本的时候可以带上一些参数,而这些参数的个数,位数可以通过shell脚本的默认变量识别出来。

例如: sh sh01.sh A B C D 那么这里的 A B C D 就是四个c参数。

$0 = sh01.sh 代表的是执行的脚本文件名

$# 代表的是后面参数的个数,这里是4

$@ 代表的是这里所有的参数情况。这里是 A B C D

下面是一个脚本的例子:


其中shift命令可以造成参数的偏移。




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值