第一种是:
1.整数测试:(一般是双目操作)
-gt大于
-le小于等于
-ne不等于
-eq等于
-ge大于等于
-lt小于等于
使用了上面的话,就必须要加中括号了
只有在使用上面的整数测试的比较值的时候,才会加中括号
bash中常用的条件测试有三种:
测试方法:
[ experssion ] 命令测试法:bash的命令
[[ experssion ]] 关键字测试法:bash的关键字
test expression
实例如下截图
if默认后面的就是一个判断是真或者是假,如果是0就是真,非0就是假,所以要学会用,如果你后面给的是一个执行结果的话,那样是不正确的方式
2.文件测试(这个也需要加中括号的)
测试文件是否存在
-e FILE:测试文件是否存在
-f File:测试文件是否为普通文件
-d FILE:测试路径是否为目录
-r FILE:测试当前用户对指定文件是否有读取权限:
-w FILE:测试当前用户对测试文件是否用执行权限;
-x FILE:测试当前用户对测试文件是否用执行权限;
用法:
如果文件存在,就是为真.
而!就是为假,整个条件就是假,就不执行条件内的了
圆整:意思为丢弃小数点后的内容
之前说了if两种条件语句
当然会有双分支不能满足的,所以就会有多分支的if语句
bash有一个专门测试脚本是否有语法错误
bash -n filetest.sh 这样来测试
测试结果不能作为一个依据,只是一个模糊;因为测试通过了只是说语法没有错误,但是内容或者逻辑可能有错误
bash -x filetest.sh 可以明确清楚的看到脚本的信息每一行是否出现错误(后期我们这里经常会用到,-x是会执行脚本的)
是执行的命令才会显示出来(+代表的是执行的语句;如下所示),不是整个脚本文件的,比如我exit之后,用-x就看不到exit后面的,因为她都执行不了后面的命令
练习
马哥写的是下面这个
意思是exit没有指定状态码,像没有指定0,1-255 ,他就会根据脚本最后一条命令确定退出的状态码的
bash变量的类型
作用域
本地变量(比本地变量还要小的:局部变量):本shell
环境变量:本shell和子shell
位置变量:$1,$2...
特殊变量:$?
如果在脚本中引用作用对象,其实,位置变量就是干这个事情的
位置变量
这里的$1,可以用命令来传递给他
特殊变量:
$?:上一条命令的退出状态码
$#:参数的个数(如果必须让脚本后面加参数,就可以用这个$#来判断)
[ $# -gt 0 ] && echo "the shell is not need parameter" && exit 1
$ :参数列表(脚本文件后面的参数列出来)
$@ :列出参数的列表(和$还是有区别的)
我们还有一个和位置变量一起来使用的,叫shift
shift(轮换,轮替的)
每一次shift就可以T剔出去一个$(默认是剔除一个的)
+n就可以T出n个$ ------------这就是轮替
避免一个shell脚本中多个位置变量,可以T出去,重复利用$但是又实现不是同一个参数
练习2
原文地址:http://blog.51cto.com/425319153/2092841