PS:在学习python的时间里,抽空复习自己学习的Linux下的shell脚本知识点
1.数据类型
学习一门语言,比较关心其数据的表示方式,以及数据的类型,这里首先看一个bash shell的脚本
执行脚本如下,
由此得出以下结论:
shell中,所有的变量字面类型都是字符串;仅当变量值全部由数字(0-9)组成时,才可以对变量进行数学运算
注:shell中,可通过declear或者typeset内部命令显式声明数据类型
#declare -i var //声明变量var为整型数
#declare -a var //声明变量var为数组
#declare -f var //声明变量var为函数
#declare -r var //声明变量var为只读
这里我们重新编写脚本
执行该脚本
我们发现,尽管显式地声明了var的类型,但其依然可被当作字符串参与比较;使用这中声明的方式的好处在于----可以对变量直接进行数学运算操作,
省去了作为字符串的繁琐方式
let "var=var+1" //var作为字符串
declare -i var
var=var+1 //var作为整型数,直接参与数学运算
2.比较&测试
shell中的测试比较主要分为3大类(个人意见):文件测试,数值比较,字符串比较
(1)文件测试
//测试存在
-e 测试文件是否存在
-d 测试目录是否存在
-f 测试普通文件是否存在
//测试权限
-r 测试文件是否可读
-w 测试文件是否可写
-x 测试文件是否可执行
//测试类型
-s 测试文件是否为空
-b 测试文件是否是块(block)设备,如硬盘等
-c 测试文件是否是字符设备
-p 测试文集是否是管道(pipe)
-S 测试文件是否是一个socket
更多还有:-h,-L,-t等等
.........................
//测试新旧
f1 -nt f2 f1比f2新 //-nt newer than
f1 -ot f2 f1比f2旧 //-ot older than
f1 -ef f2 f1与f2都链接到同一文件上
(2)数值比较
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
注:也可使用> >= < <=的形式,但此时需要将表达式用双括号括起来,如 (("$a">"$b"))
(3)字符串比较
= 等于(POSIX version)
== 等于
!= 不等于
> 大于
< 小于
-z 字符串长度为0 (zero),即字符串为空(null)
-n 字符串不为空(null),not zero
Note:
更多相关内容,参考<<Advanced Bash Shell Script>> Page:46,62