&&和||命令
&& 符合条件做动作
|| 不符合条件做动作
命令展示:
当ping相应的网址没有报错信息时,输出yes,有报错信息时输出no。
test命令作用
test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
test命令的用法
1.test命令的含义
test命令相当于[]
test "$a" = "$b" = [ "$a" = "$b" ]
这里要注意空格否则报错。
2.对数值的测试
test
=
!=
-eq #等于
-ne #不等于
-lt #小于
-gt #大于
-le #小于等于
-ge #大于等于
命令展示:
第一组
注意! -eq虽然执行效果和-ne相同,但其实使用了两次判断,因此执行效率低于-ne。
第二组
第三组
3.对字符的测试
-n #nozero 判定内容不为空
-z #zero 判定内容为空
4.对文件的测试
-ef #文件节点号是否一致(硬链)
-nt #文件1是不是比文件2新
-ot #文件1是不是比文件2老
-d #目录
-S #套结字
-L #软连接
-e #存在
-f #普通文件
-b #块设备
-c #字符设备
命令展示:
第一组
这里先补充一下硬链接和软连接的知识:
1.如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的inode,才能成功找到文件内容所在的block块,创建硬链接后,己经存在的文件的节点号(Inode)会被多个目录文件项使用。
2.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接它就可以,不必重复的占用磁盘空间。
硬链接: ln 源文件 目标文件
它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
软链接: ln -s 源文件 目标文件
它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间。
第二组
第三组
5.补充-条件关系
-a #并且
-o #或者
使用export可以传参
test命令练习
编写脚本完成以下条件:
file_check.sh 在执行时如果脚本后未指定检测文件则报错“未指定检测文件,请指定”,如果脚本后指定文件不存在则报错“此文件不存在”,当文件存在时请检测文件类型并显示到输出中。
$():执行括号里面动作
如果按test -L -d等做判断时,记得将链接-L在文件-f前判断,否则当lyueyue1为lyueyue的软链接时,lyueyue1实际不存在,但test -f会返回成功值。