这一片主要说test文件的比较,文件比较在日常使用的频率比较高,这里重点把每个部分都试着说说看

1. 检车目录 -d

-d测试会检查指定的文件名是否在系统上以目录的形式存在,当我们要写文件到某个目录之前,或者是将文件放置到某个目录位置的时候,就需要使用-d来检测这个目录是否存在

#!/bin/bash

#look before you leap

if [ -d $HOME ]
then
echo " your Home directory exists"
cd $HOME
ls -a
else
echo " there is a problem with your HOME directory"
fi

运行截图,代码的意思就是要检测HOME这个目录是否存在,如果这个目录存在就切换到这个目录,并且执行 ls -a命令,输出HOme目录下的所有文件

2. 检查对象是否存在 -e

-e比较允许你在脚本中使用对象前检查文件或者目录是否寻再

#!/bin/bash

#chesking if a directory exists

if [ -e $HOME ]
then
echo "ok,on the directory.now to check the file"
if [ -e $HOME/testing ]
then
echo "addending date to existing file"
date >> $HOME/testing
else
echo "create a file"
date > $HOME/testing
fi
else
echo "sorry you do not have a Home directory"
fi

这段代码的意思就是先要检测HOME文件是否存在,如果存在,那么就检测testing文件是否存在,如果存在就吧date的数据追加写到testing文件中,如果testing文件补充存在就创建testing文件,并把date数据写入到文件中

3. 检查文件 -f

确定指定的对象是个文件 -f,区分一个文件名是目录还是文件,需要使用 -f

#!/bin/bash

#cheak if a file

if [ -e $HOME ]
then
echo "the object exists,is it a file?"
if [ -f $HOME ]
then
echo " yes it is a file"
else
echo " no if is not a file"
if [ -f $HOME/.bash_history ]
then
echo " but this is a file"
else
echo "this is not a file too"
fi
fi
else
echo "sorry the object dose not exists"
fi exit 0

这段代码的意思就是首先检查HOME目录是否存在,如果存在,则判断home是不是一个文件,如果是就是输出这是一个文件,如果不是,就输出这不是一个文件,并且判断home下的bash_history是不是一个文件,如果是就输出是,如果不是就输出不是,最后如果HOME文件不存在,这直接执行最后一段代码,输出这个对象不存在。

4. 检查文件是否可读 -r

当我在尝试从文件中读取数据是,最好先判断一下该文件是否可读。

#!/bin/bash

#testing if you can read a file

pwfile=/etc/shadow

if [ -f $pwfile ];then
if [ -r $pwfile ];then
tail $pwfile
else
echo " sorry o am unable to read the $pwfile"
fi
else
echo " sorry $pwfile is not a file "
fi

/etc/shadow文件还有系统用户加密后的密码,所以他对系统上的普通用户是不可读的

5.检查空文件-s

当我们要删除一个文件的时候,有时候需要查看这个文件是否是一个空文件,不过这里要注意的是,-s检测到文件是控空文件的时候返回的退出码是1

#!/bin/bash

#testing if a file is empty

file=testfile
touch $file if [ -s $file ];then
echo "the $file file exists and has date in"
else
echo "the $file exists and is empty"
fi
date > $file
if [ -s $file ];then
echo "the $file file exists and has date in"
else
echo "the $file exists and is empty"
fi

</pre></p></blockquote></p><p></p><p>6. 检查文件是否可写 -w</p><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><p></p><p>判断是是否对该文件有写权限</p><p><pre name="code" class="plain">#!/bin/bash

#check if a file is writeable

logfile=$HOME/logtest
touch $logfile chmod u-w $logfile new=`date +%y%m%d-%H%M` if [ -w $logfile ];then
echo "the program ran at : $logfile" > $logfile
echo "the first attempt succeeded"
else
echo "the first attempt failes"
fi
chmod u+w $logfile if [ -w $logfile ];then
echo "the program ran at : $logfile" > $logfile
echo "the second attempt succeeded"
else
echo "the second attempt failes"
fi

7.检查文件是否可执行 -x

-x比较是一个渐变的判断一个特定文件是否有可执行的权限的方法。

#!/bin/bash

#testing file execution

if [ -x shelltest2.sh ];then
echo " you can run the script:"
./shelltest2.sh
else
echo " you are unable to execute the script"
fi

8. 检查文件所属关系 -O

-O比较允许你轻松的测试你是否是文件属主

#!/bin/bash

#check file ownership

if [ -O /etc/passwd ];then
echo " yao are the file owner"
else
echo " you are not file owner"
fi

9. 检查默认属组关系

#!/bin/bash

#check file group test

if [ -G $HOME/shellcode/testfile ];then
echo " yao are in the same grouup"
else
echo " the file is not owned by tour group"
fi

10. 检查文件日期

#!/bin/bash

#test file dates

if [ $HOME/shellcode/testfile -nt $HOME/shellcode/testfile1 ];then
echo " testfile new than testfile1"
else
echo " testfile1 new than testfile"
fi

到这里,文件的test就基本介绍完了,后面的讲继续介绍

还有一部分这里就不做详细解释,大家可以自行百度学习一下

1. 复合条件测试

【】&&【】

【】||【】

2. if-then高级特性

((expression))

【【expression】】

3. case命令

case variable in
pattern1 | pattern2) commands1;;
pattern3)commands2;;
*) default commands;;

最新文章

  1. 20161022 NOIP模拟赛 T1 解题报告
  2. 使用UG UISTYLER 窗体编辑器,创建对话框 part 2
  3. Magicodes.WeiChat——多租户的设计与实现
  4. myBatis 实现用户表增删查改操作&lt;方法1 没有使用接口的&gt;(最终版)
  5. c语言开发手机通讯录
  6. 利用WiFi钓鱼法追邻居漂亮妹纸
  7. 2013ACM省赛题目
  8. java项目中eclipse控制台输出log4j的信息
  9. Hibernate 环境搭建
  10. 2-51单片机WIFI学习(开发板测试远程通信详细介绍)
  11. mysql 从一个表中查数据,插入另一个表
  12. Python第八课学习
  13. 你不知道的 #include
  14. a标签的4种状态及设置CSS
  15. 论文类型Journal、magazin、transaction、letter等的区别
  16. Skip level 1 on 1
  17. Jenkins 踩过的坑之再总结
  18. JavaScript -- Navigator
  19. BZOJ.4072.[SDOI2016]征途(DP 斜率优化)
  20. struts2 动态Action

热门文章

  1. 设置IE浏览器的默认主页
  2. 使用Sleep方法延迟时间
  3. mysql中set和enum使用(简单介绍)
  4. vue进阶语法及生命周期函数
  5. 并发编程之多线程基础-join方法及优先级(五)
  6. Vue--- mint-UI 穿插
  7. 小a的强迫症(组合数学)
  8. 你知道JQuery中的事件冒泡吗,他是怎么执行的,如何来停止冒泡事件?
  9. 记js里codePointAt()方法返回的结果的含义。
  10. PHP计算两个时间戳之间间隔时分秒