1.概述

允许测试Linux文件系统上文件的目录和状态。

2.详解

2.1 检查目录

-d测试会检查指定的目录是否存在于系统中。当我们打算将文件写入目录或是准备切换到该目录时,先进行测试是比较好的做法。

#!/bin/bash
#Look before you leap
#
jump_dir=/home/songzhen
#
if [ -d $jump_dir ]
then
echo "The $jump_dir directory exists"
cd $jump_dir
ls
else
echo "The $junp_dir directory does not exist"
fi

执行该脚本,结果如下:

2.2 检查对象是否存在(文件或目录)

-e比较允许你的脚本代码在使用文件或者目录前先检查它们是否存在。

#!/bin/bash
#Check if either a directory or file exists
#
location=$HOME
file_name="sentinel"
#
if [ -e $location ]
then
echo "OK on the $location directory."
echo "Now checking on the file, $file_name."
#
if [ -e $location/$file_name ]
then
echo "OK on the filename"
echo "Updating Current Date..."
date >> $location/$file_name
#
else
echo "File not exist"
echo "touch the File"
touch $file_name
fi
#
else
echo "The $location directory does not exist."
echo "Nothing to update"
fi

执行该脚本,结果如下:

2.3 检查文件

如果确定了对象为文件,必须用-f比较。

#!/bin/bash
#Check if either a directory or file exists
#
item_name=$HOME
echo
echo "The item being checked: $item_name"
echo
#
if [ -e $item_name ]
then
echo "The item, $item_name, does exist."
echo "But is it a file?"
echo
#
if [ -f $item_name ]
then
echo "Yes, $item_name is a file."
else
echo "No, $item_name is not a file."
fi
#
else
echo "The item, $item_name, does not exist."
echo "Nothing to update"
fi

执行该脚本,结果如下:

2.4 检查是否可读

在尝试从文件中读取数据之前,最好先测试一下文件是否可读,可以使用-r比较测试。

#!/bin/bash
#testing if you can read a file
pwfile=/etc/shadow
#
# first, test if the file exists, and is a file
if [ -f $pwfile ]
then
#now test if you can read it
if [ -r $pwfile ]
then
tail $pwfile
else
echo "Sorry, I am unable to read the $pwfile file"
fi
else
echo "Sorry, the file $pwfile does not exist"
fi

执行该脚本,结果如下:

2.5 检查是否可写

-w比较会判断你对文件是否有可写权限。

#!/bin/bash
#Check if either a directory or file exists
#
item_name=$HOME/sentinel
echo
echo "The item being checked: $item_name"
echo
#
if [ -e $item_name ]
then
echo "The item, $item_name, does exist."
echo "But is it a file?"
echo
#
if [ -f $item_name ]
then
echo "Yes, $item_name is a file."
echo "But is it writable?"
echo
#
if [ -w $item_name ]
then
echo "Writing current time to $item_name"
date +%H%M >> $item_name
#
else
echo "Unable to write to $item_name"
fi
#
else
echo "No, $item_name is not a file."
fi
#
else
echo "The item, $item_name, does not exist."
echo "Nothing to update"
fi
#

执行该脚本,结果如下:

2.6 检查空文件

用-s比较来检查文件是否为空,尤其是在不想删除非空文件时经常使用,-s比较成功则说明文件中有数据。

#!/bin/bash
#Testing if a file is empty
#
file_name=$HOME/sentinel
#
if [ -f $file_name ]
then
if [ -s $file_name ]
then
echo "The $file_name file exists and has data in it."
echo "will not remove this file."
else
echo "The $file_name file exists but is empty."
echo "Deleting empty file..."
rm $file_name
fi
else
echo "The $file_name does not exist."
fi

执行该脚本,结果如下:

2.7 检查文件是否可以执行

-x比较是判断特定文件是否有执行权限的一个简单办法。

#!/bin/bash
#testing file execution
#
if [ -x test9.sh ]
then
echo "You can run the script:"
else
echo "Sorry,You are unable to execute the script"]
fi

执行该脚本,结果如下:

2.8 检查所属关系

-O比较可以测试出你是否是文件的属主

#!/bin/bash
#check file ownership
#
if [ -O /etc/passwd ]
then
echo "You are the owner of the /etc/passwd file"
else
echo "Sorry, you are not the owner of the /etc/passwd file"
fi

执行该脚本,结果如下:

2.9 检查默认属组关系

-G比较会检查文件的默认组,如果它匹配了用户的默认组,则测试成功,-G比较只会检查默认组而非用户所属的所有组。

#!/bin/bash
#check file group test
#
if [ -G $HOME/testing ]
then
echo "You are in the same group as the file"
else
echo "The file is not owned by your group"
fi

执行该脚本,结果如下:

2.10 检查文件日期

-nt和-ot用来对两个文件的创建日期进行比较,在编写软件安装脚本时非常有用,但是要注意的是要先确认文件是存在的。

#!/bin/bash
#testing file dates
if [ test9.sh -nt test8.sh ]
then
echo "The test9.sh file is newer than test8.sh."
else
echo "The test8.sh file is newer than test9.sh."
fi

执行该脚本,结果如下:

shell脚本编程基础--文本比较的更多相关文章

  1. Linux shell脚本编程基础之练习篇

    shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...

  2. SHELL脚本编程基础知识

    SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...

  3. shell脚本编程基础介绍

    Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...

  4. linux基础—课堂随笔_03 SHELL脚本编程基础

    shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then条件为真的分 ...

  5. shell脚本编程基础

       最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用. 一.shell脚本基础    shell脚本是利用shell的功能 ...

  6. Linux Shell脚本编程-基础1

    概述:  shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...

  7. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. Linux基础篇–shell脚本编程基础

    本章内容概要  编程基础  脚本基本格式  变量  运算  条件测试  配置用户环境 7.1 编程基础程序:指令+数据程序编程风格:   过程式:以指令为中心,数据服务于指令   对象式:以数据为中心 ...

  9. Shell脚本编程基础笔记一

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8176137.html 一:脚本文件的创建.格式.运行 1:创建shell脚本 首先,要创建一个文件 touch ...

随机推荐

  1. nginx篇最初级用法之访问认证

    1打开conf下的配置文件 在server 之下 location 之上加入 auth_basic "Input Password:";    弹出的提示信息 auth_basic ...

  2. js中关于执行的顺序及变量存放方式的一点记录

    Markdown在线编辑器 - www.MdEditor.com 1 首先关于数据类型,有基本数据类型,和引用数据类型 基本数据类型有:number,string,boolean等:引用数据类型一般指 ...

  3. P2860()

    题目描述: 为了从F(1≤F≤5000)个草场中的一个走到另一个,贝茜和她的同伴们有时不得不路过一些她们讨厌的可怕的树.奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有 ...

  4. What's your name?

    Hello. My name is james. What's your name? Hi, I'm Jessica. Nice to meet you. Nice to meet you, too. ...

  5. 从Gartner IT Symposium,看RPA“一半是海水一半是火焰”

    2019年,艺赛旗和Gartner建立了咨询合作,并在企业发展策略中汲取了Gartner的部分建议.今年Gartner在全球召开了多场IT Symposium,并在Symposium发布2020的相关 ...

  6. 1011课堂小结 day21

    组合 什么是组合 组合指的是一个对象中的属性,是另一个对象. 为什么要使用组合 为了减少代码冗余 封装 什么是封装 封装指的是把一堆属性(特征与技能)封装到一个对象中 为什么要封装 封装的目的为了方便 ...

  7. request爬虫通用的小技巧

    嵩天老师一直强调的通用代码框架,这个框架可以用在很多爬虫中用来获取HTML文本,并且它通过response.raise_for_status()方法判断返回的状态码是不是200,如果不是,就会引发HT ...

  8. linux cmake安装方法

    linux cmake安装方法 OpenCV 2.2以后的版本需要使用Cmake生成makefile文件,因此需要先安装cmake:还有其它一些软件都需要先安装cmake 1.在linux环境下打开网 ...

  9. 201871010114-李岩松《面向对象程序设计(java)》第四周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  10. nyoj 1364-治安管理 (INT_MAX)

    1364-治安管理 内存限制:128MB 时间限制:3000ms 特判: No 通过数:6 提交数:6 难度:2 题目描述: SZ市是中国改革开放建立的经济特区,是中国改革开放的窗口,已发展为有一定影 ...