shell判断文件,目录是否存在或者具有权限的代码

 更新时间:2013年06月10日 14:14:23   投稿:mdxy-dxy  
因shell还不是很熟练,所以做此笔记,方便查看,学习shell的朋友可以参考下

核心代码

#!/bin/sh 
myPath="/var/log/httpd/" 
myFile="/var /log/httpd/access.log" 
#这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 

if [ ! -x "$myPath"]; then 
mkdir "$myPath" 
fi 
#这里的-d 参数判断$myPath是否存在 
if [ ! -d "$myPath"]; then 
mkdir "$myPath" 
fi 
#这里的-f参数判断$myFile是否存在 
if [ ! -f "$myFile" ]; then 
touch "$myFile" 
fi 
#其他参数还有-n,-n是判断一个变量是否是否有值 
if [ ! -n "$myVar" ]; then 
echo "$myVar is empty" 
exit 0 
fi 
#两个变量判断是否相等 
if [ "$var1" = "$var2" ]; then 
echo ‘$var1 eq $var2′ 
else 
echo ‘$var1 not eq $var2′ 
fi

shell 判断语句

流程控制 "if" 表达式 如果条件为真则执行then后面的部分: if ….; then
….
elif ….; then
….
else
….
fi
大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…   通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等 -r file     用户可读为真
-w file     用户可写为真
-x file     用户可执行为真
-f file     文件为正规文件为真
-d file     文件为目录为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描述符(默认为1)指定的设备为终端时为真
#########################################################
含条件选择的shell脚本
对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,
包括比较运算、判断文件是否存在等。基本的if条件命令选项有: -eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
几 乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。 ################################################################## 判断文件是否存在

#!/bin/sh 
today=`date -d yesterday +%y%m%d` 
file="apache_$today.tar.gz" 
cd /home/chenshuo/shell 
if [ -f "$file" ];then 
echo "OK" 
else 
echo "error $file" >error.log 
mail -s "fail backup from test" linuxcy@126.com fi 

相关文章

  • shell脚本测试某网段内主机连通性

    shell脚本测试某网段内主机连通性

    这篇文章主要介绍了shell脚本测试某网段内主机连通性,需要的朋友可以参考下
    2017-10-10
  • linux shell字符串内置的常用操作(获取长度、查找、替换)

    linux shell字符串内置的常用操作(获取长度、查找、替换)

    在编写shell程序时,经常会涉及到字符串相关操作。有许多命令语句,如awk,sed都能够做字符串各种操作。 事实上shell内置一系列操作符号,能够达到相似效果,使用内部操作符会省略启动外部程序等时间,因此速度会很的快。如果内置的操作符能够做到的,优先使用内置的
    2015-12-12
  • Linux命令每天必学之 useradd/adduser 新增用户

    Linux命令每天必学之 useradd/adduser 新增用户

    Linux下useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。接下来通过本文给大家介绍每天必学Linux命令之 useradd/adduser 新增用户的相关知识,需要的朋友参考下吧
    2018-10-10
  • Linux中的service命令与systemctl命令有何区别

    Linux中的service命令与systemctl命令有何区别

    在Linux中,service 和 systemctl 是两个至关重要且极其相似的命令,它们如此相似,以至于人们很容易想知道它们之间有何不同,是否可以互换使用,下面我们就来看看之前的区别到底有哪些吧
    2023-08-08
  • Linux中查看服务器内存/CPU/网络占用情况的命令

    Linux中查看服务器内存/CPU/网络占用情况的命令

    这篇文章主要为大家整理了一些Linux中查看服务器内存、CPU和网络占用情况的命令,文中的示例代码简洁易懂,需要的小伙伴可以参考一下
    2023-08-08
  • Python执行Linux系统命令的4种方法

    Python执行Linux系统命令的4种方法

    这篇文章主要介绍了Python执行Linux系统命令的4种方法,即在Python脚本中调用Shell命令,需要的朋友可以参考下
    2014-10-10
  • jenkins 实现shell脚本化定时执行任务的方法

    jenkins 实现shell脚本化定时执行任务的方法

    这篇文章主要介绍了jenkins 实现shell脚本化定时执行任务,解决访问是jenkins构建好之后将jar远程推送到生产服务器,提前退出后台执行服务器远程脚本,脚本通过ngnx提前切走nginx代理auction sleep 1800s,半小时后执行更新重启,具体操作过程跟随小编一起看看吧
    2022-01-01
  • shell脚本快速检查192.168.1网段ip是否在用的方法

    shell脚本快速检查192.168.1网段ip是否在用的方法

    该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用不同颜色的日志区分在线和离线的IP地址,本文介绍shell脚本快速检查192.168.1网段ip是否在用,感兴趣的朋友一起看看吧
    2025-01-01
  • linux模糊查找一个文件的方法

    linux模糊查找一个文件的方法

    这篇文章主要介绍了linux模糊查找一个文件的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • Shell实现识别物理cpu个数、核心数

    Shell实现识别物理cpu个数、核心数

    这篇文章主要介绍了Shell实现识别物理cpu个数、核心数,本文还介绍了判断是否为超线程的功能,需要的朋友可以参考下
    2014-12-12

最新评论