码迷,mamicode.com
首页 > 其他好文 > 详细

3、文件测试和bash中的变量类型+shift用法

时间:2018-03-30 12:18:11      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:文件测试 变量类型 shell

文件测试和bash中的变量类型
exit(可以提前结束脚本的命令)
exit:退出脚本进程
那我们说,任何一个命令执行完了,都会有一个执行结果和执行状态结果.
exit除了可以退出脚本不执行后面的语句之后,还可以用来定义执行状态结果是什么的?(正确或者错误)我们完全可以自定义
自定义:
0表示正确
1-255表示错误
只要你的脚本遇到exit命令,就直接退出脚本,不会再执行后面的命令了,如果exit没有定义,也就是后面为空,就返回的执行状态结果为最后执行那一条命令的状态返回结果。
技术分享图片

第一种是:
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
技术分享图片技术分享图片

3、文件测试和bash中的变量类型+shift用法

标签:文件测试 变量类型 shell

原文地址:http://blog.51cto.com/425319153/2092841

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!