精华内容
下载资源
问答
  • Shell判断文件或目录是否存在

    万次阅读 2019-08-30 15:36:11
    Shell判断文件或目录是否存在 一. 具体每个选项对应的判断内容: -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename ...

    Shell判断文件或目录是否存在

    一. 具体每个选项对应的判断内容:

    -e filename 如果 filename存在,则为真 
    -d filename 如果 filename为目录,则为真 
    -f filename 如果 filename为常规文件,则为真 
    -L filename 如果 filename为符号链接,则为真 
    -r filename 如果 filename可读,则为真 
    -w filename 如果 filename可写,则为真 
    -x filename 如果 filename可执行,则为真 
    -s filename 如果文件长度不为0,则为真 
    -h filename 如果文件是软链接,则为真

    二.常用的例子:

    1.判断文件夹是否存在

    #shell判断文件夹是否存在
    
    #如果文件夹不存在,创建文件夹
    if [ ! -d "/myfolder" ]; then
      mkdir /myfolder
    fi

    2.判断文件夹是否存在并且是否具有可执行权限

    #shell判断文件,目录是否存在或者具有权限
    folder="/var/www/"
    file="/var/www/log"
    
    # -x 参数判断 $folder 是否存在并且是否具有可执行权限
    if [ ! -x "$folder"]; then
      mkdir "$folder"
    fi

    3.判断文件夹是否存在

    # -d 参数判断 $folder 是否存在
    if [ ! -d "$folder"]; then
      mkdir "$folder"
    fi

    4.判断文件是否存在

    # -f 参数判断 $file 是否存在
    if [ ! -f "$file" ]; then
      touch "$file"
    fi

    5.判断一个变量是否有值

    # -n 判断一个变量是否有值
    if [ ! -n "$var" ]; then
      echo "$var is empty"
      exit 0
    fi

    6.判断两个变量是否相等.

    # 判断两个变量是否相等
    if [ "$var1" = "$var2" ]; then
      echo '$var1 eq $var2'
    else
      echo '$var1 not eq $var2'
    fi

     

    展开全文
  • if判断文件或目录是否存在以及文件覆盖与备份 一、简介 本文主要记录一波linux中shell脚本用if语句判断文件或目录是否存在,并且以jenkins自动发布覆盖项目和历史版本记录为例,让大家跟好的理解shell脚本的灵活...

                     if判断文件或目录是否存在以及文件覆盖与备份

    一、简介

              本文主要记录一波linux中shell脚本用if语句判断文件或目录是否存在,并且以jenkins自动发布覆盖项目和历史版本记录为例,让大家跟好的理解shell脚本的灵活。

    二、基础知识

      1.脚本注意要点:

    • .sh结尾的开头要加下面这段代码
    #!bin/sh
    • Bash脚本中的赋值符号“=”前后不能有空格   
    •  " [ " 与" ] " 前后要加上空格 
    • 每一行结尾换号智能是\n 不能是\r\n因为windows换行会有\r bash是解析不了的
    • 每个关键字后面面都要加上空格

    下面框出来的红点部位就是空格

    如果换行符多了就会报下面的错

    可以用notepad++全部替换为空

       2.shell中if-else 、if-elseif-else的语法

    (其中elif就是elseif)

    如果不需要elseif 和else  可以删除 ,跟其他语言一样elseif可以有多个

    #!bin/sh
    flag=-1
    if [ "$flag" == 0 ];
    then 
     echo "if语句"
    elif [ "$flag" -gt 0 ];
    then 
     echo "elseif语句" 
    else 
     echo "else语句执行"
    fi 

       3.常见的if 条件判断

           1.通用判断
              -eq 或 ==      等于             
              -ne                不等于            
              -gt                 大于               
              -ge                大于等于        
              -lt                  小于                
              -le                 小于等于      

      
    #!bin/sh
    flag=0
    if [ "$flag" -eq 0 ];
    then 
     echo "if语句"
    fi 
    if [ "$flag" == 0 ];
    then 
     echo "if语句"
    fi 
    if [ "$flag" -ne 0 ];
    then 
     echo "if语句"
    fi 
    
    #或者用双括号
    
    if (("$flag" == 0))
    then 
     echo "if语句"
    fi 
    

    使用符号判断   注意:需要双括号如:(("$a" < 0))

    <        小于
    <=      小于等于
    >        大于(需要双括号)
    >=      大于等于(需要双括号)

    #!bin/sh
    a=-1
    
    if (("$a" < 0))
    then 
     echo "if语句2"
    fi 

     如果要详细了解可以看菜鸟教程上面的介绍:

    https://www.runoob.com/linux/linux-shell-process-control.html

     

     

    三、文件和目录判断

        1. 判断文件和目录

    -x 判断文件是否存在并且是否具有可执行权限 
    -d  判断目录是否存在 
    -f 判断文件是否存在 
    -n  判断一个变量是否为空

    #!bin/sh
    
    path="/xxx/xxx"  
    fileName="/xxx/xxx/xxx.txt/"  
      
    #这里的-x 参数判断$path是否存在并且是否具有可执行权限  
    if [  -x "$path"]; 
    then  
     echo "$path"  
    fi  
    # 这里加! 就是否的意思在此处也就是没有可执行权
    if [ ! -x "$path"]; 
    then  
     echo "$path"  
    fi  
    #这里的-d 参数判断$path是否存在  
    if [  -d "$path"]; 
    then  
     echo "$path"  
    fi  
      
    #这里的-f参数判断$fileName是否存在  
    if [  -f "$fileName" ]; 
    then  
      echo "$fileName"  
    fi  
      
    #其他参数还有-n,-n是判断一个变量是否是否有值  
    if [  -n "$myVar" ]; 
    then  
      echo "$myVar is empty"  
      exit 0  
    fi  
      

    四、脚本示例

       1.判断指定文件是否存在,如果存在则备份并删除

     

    #要备份且删除的文件
    fileName="xxxx/xxx.xxx"
    #将旧版本放到目录指定目录下 以当前日期作为文件夹名,以原文件名+当前时间名作为历史版本文件名
    bacfilePath="xxxxx/bac/$(date '+%Y%m%d')"
    #查看是否有重复的文件
    if [  -f "$fileName" ]; then
     if [ ! -d "$bacfilePath" ]; then
        # mkdir "$bacfilePath"
    	echo $bacfilePath 
     fi 
     mv -fb "$fileName" "$fileName.$(date '+%Y%m%d%H%M%S')"
    fi 

        2.升级版,根据传入的参数备份文件

    (本脚本用于jenkins 自动部署时脚本,后期会不全jenkins 远程部署等博文,可持续关注本人)

     运行命令:

    [root@localhost shelltest]# bash backupJar.sh -f openapi-server.jar -p /wfq/springboot/run/
    
    
    -f 文件名
    -p 文件所在目录

      具体脚本

    #!/bin/sh
    
    #该脚本用于罗格朗测试环境jenkins自动发布  判断是上传的jar是否已存在某个目录 如果有则将该版本移动到指定历史版本文件夹中
    
    #说明  传入参数 args: [-参数简称{,多个用逗号隔开}]\[--具体参数名{,多个用逗号隔开}] 详见 变量名
    show_usage="args: [-f,-p]\[--fileName=,--filePath=]"
    
    
    #变量名 fileName=将要发布的jar名称 filePath jar所在的目录 默认为下面该目录
    
    fileName=""
    
    filePath="/legrand/apps/legrand-cloud"
    
    # getopts :s:h表示这个命令接受2个带参数选项,分别是-h和-s
    
    GETOPT_ARGS=`getopt -o f:p: -al fileName:,filePath: -- "$@"`
    eval set -- "$GETOPT_ARGS"
    #获取参数
    while [ -n "$1" ]
    do
            case "$1" in
                    -f|--fileName) fileName=$2; shift 2;;
                    -p|--filePath) filePath=$2; shift 2;;
                    --) break ;;
                    *) echo $1,$2,$show_usage; break ;;
            esac
    done
    
    
    
    #要运行的目标jar
    runjar="$filePath/$fileName"
    #将旧版本放到目录$filePath/bac目录下 以当前日期作为文件夹名,以原文件名+当前时间名作为历史版本文件名
    bacfilePath="$filePath/bac/$(date '+%Y%m%d')"
    #查看是否有重复的文件
    if [  -f "$runjar" ]; then
     if [ ! -d "$bacfilePath" ]; then
        mkdir "$bacfilePath"
     fi
     mv -fb "$runjar" "$bacfilePath/$fileName.$(date '+%Y%m%d%H%M%S')"
    fi

     

    展开全文
  • 在编写shell脚本时,通常最开始的工作是对环境的检查,比如检查某一文件或目录是否存在,并执行相应的操作等。下面的shell脚本实现的功能是,先检查某一目录是否存在,不存在的话就创建此目录存在的话就cd到这个...

    在编写shell脚本时,通常最开始的工作是对环境的检查,比如检查某一文件或目录是否存在,并执行相应的操作等。下面的shell脚本实现的功能是,先检查某一目录是否存在,不存在的话就创建此目录,存在的话就cd到这个目录下。

    #!/bin/bash  #指定用到的shell解释器
    
    export myPath=/tmp/test   #设置目录的值
    
    if [[ ! -e ${myPath} ]];   #判断此目录是否不存在
    then 
    mkdir $myPath;  #不存在则创建并切换目录
    cd $myPath;
    else
    cd $myPath;  #存在则直接切换目录
    fi

    然后我们执行相应的命令

    [root@redhatclient test]# pwd
    /root/test
    [root@redhatclient test]# ls /tmp |grep test
    [root@redhatclient test]# sh sh1.sh
    [root@redhatclient test]# pwd
    /root/test
    [root@redhatclient test]# ls /tmp |grep test
    test
    [root@redhatclient test]# 

    可以看到脚本可以实现我们预想的功能,但是有一点要说明,在shell里面切换的目录,在shell执行完之后并不会生效,因为sh sh1.sh这种方式是在当前的shell下生成了一个shell子进程,只对接下来的脚本生效,不会对父进程shell生效。如果想要对父进程shell生效,使用命令:

    [root@redhatclient test]# source sh1.sh 
    [root@redhatclient test]# pwd
    /tmp/test
    [root@redhatclient test]# 
    展开全文
  • 一、通过复制方法创建文件或目录 二、通过新建方法创建文件目录 一、通过复制方法创建文件或目录 (1)复制文件(包括空文件): @echo off echo result.jtl文件判断 SET SourceFile=G:\Jmeter\apache-jmeter...

    目录

    一、通过复制方法创建文件或目录

    二、通过新建方法创建文件和目录



    一、通过复制方法创建文件或目录

    (1)复制文件(包括空文件):

    @echo off
    echo result.jtl文件判断
    SET SourceFile=G:\Jmeter\apache-jmeter-5.0\report\backup\result.jtl
    SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
    
    if not exist %GenFile% (
            rem 复制文件result.jtl
            copy %SourceFile% %GenFile%
    		echo %GenFile% 文件不存在,已创建该文件!
        ) else (
            echo %GenFile% 文件已存在,无需创建!
        )

    (2) 复制目录(包括空目录):

    @echo off
    echo OutReport目录判断
    SET SourceFolder=G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport
    SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport\
    
    if not exist %GenFolder% (
            rem 复制目录G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport到G:\Jmeter\apache-jmeter-5.0\report路径下
    		Xcopy %SourceFolder% %GenFolder%  /s/e/h/i
    		echo %GenFolder%目录不存在,已创建该目录!
        ) else (
            rem 目录G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,无需创建
    		echo %GenFolder%目录已存在,无需创建!	
        )

    (3) 复制文件和目录(包括空):

    @echo off
    echo result.jtl文件判断
    SET SourceFile=G:\Jmeter\apache-jmeter-5.0\report\backup\result.jtl
    SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
    
    if not exist %GenFile% (
            rem 复制文件result.jtl
            copy %SourceFile% %GenFile%
    		echo %GenFile% 文件不存在,已创建该文件!
        ) else (
            echo %GenFile% 文件已存在,无需创建!
        )
    
    	
    echo OutReport目录判断
    SET SourceFolder=G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport
    SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport\
    
    if not exist %GenFolder% (
            rem 复制目录G:\Jmeter\apache-jmeter-5.0\report\backup\OutReport到G:\Jmeter\apache-jmeter-5.0\report路径下
    		Xcopy %SourceFolder% %GenFolder%  /s/e/h/i
    		echo %GenFolder%目录不存在,已创建该目录!
        ) else (
            rem 目录G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,无需创建
    		echo %GenFolder%目录已存在,无需创建!	
        )


    二、通过新建方法创建文件和目录

    (1)新建文件:

    @echo off
    echo result.jtl文件判断
    SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
    
    if not exist %GenFile% (
            rem 创建空文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
    		rem 如果需要添加内容,少量的,可以用内容把“nul”替换掉,比如:type 这是文件内容>%GenFile%;多的话则使用复制方法
    		type nul>%GenFile%
    		echo %GenFile%文件不存在,已创建该文件!
        ) else (
            rem 文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl已存在,无需创建
    		echo %GenFile%文件已存在,无需创建!	
        )

    (2)新建空目录:

    @echo off
    echo OutReport目录判断
    SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport
    
    if not exist %GenFolder% (
            rem 创建空目录G:\Jmeter\apache-jmeter-5.0\report\OutReport
    		rem 创建非空目录,使用复制方法
    		echo %GenFolder%目录不存在,已创建该目录!
    		md %GenFolder%
        ) else (
            rem 目录G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,无需创建
    		echo 目录%GenFolder%目录已存在,无需创建!	
        )

    (3) 目录下是否存在.jtl后缀名文件判断:

    @echo off
    echo .jtl后缀名文件判断
    SET GenFile="G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl
    
    if not exist %GenFile% (
            rem 创建空文件G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
    		rem 如果需要添加内容,少量的,可以用内容把“nul”替换掉,比如:type 这是文件内容>文件路径\新文件名;多的话则使用复制方法
    		type nul>G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
    		echo %GenFile%文件不存在,已创建该文件!
        ) else (
            rem 文件"G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl已存在,无需创建
    		echo %GenFile%文件已存在,无需创建!	
        )
    

    (4)新建文件和目录:

    @echo off
    echo result.jtl文件判断
    SET GenFile=G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
    
    if not exist %GenFile% (
            rem 创建空文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl
    		rem 如果需要添加内容,少量的,可以用内容把“nul”替换掉,比如:type 这是文件内容>%GenFile%;多的话则使用复制方法
    		type nul>%GenFile%
    		echo %GenFile%文件不存在,已创建该文件!
        ) else (
            rem 文件G:\Jmeter\apache-jmeter-5.0\report\jtl-report-output\result.jtl已存在,无需创建
    		echo %GenFile%文件已存在,无需创建!	
        )
    
    	
    echo OutReport目录判断
    SET GenFolder=G:\Jmeter\apache-jmeter-5.0\report\OutReport
    
    if not exist %GenFolder% (
            rem 创建空目录G:\Jmeter\apache-jmeter-5.0\report\OutReport
    		rem 创建非空目录,使用复制方法
    		echo %GenFolder%目录不存在,已创建该目录!
    		md %GenFolder%
        ) else (
            rem 目录G:\Jmeter\apache-jmeter-5.0\report\OutReport已存在,无需创建
    		echo 目录%GenFolder%目录已存在,无需创建!	
        )
    	
    	
    echo 所有.jtl后缀名文件判断
    SET GenFile="G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl
    
    if not exist %GenFile% (
            rem 创建空文件G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
    		rem 如果需要添加内容,少量的,可以用内容把“nul”替换掉,比如:type 这是文件内容>文件路径\新文件名;多的话则使用复制方法
    		type nul>G:\Jmeter\apache-jmeter-5.0\report\jtl\newfile.jtl
    		echo %GenFile%文件不存在,已创建该文件!
        ) else (
            rem 文件"G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl已存在,无需创建
    		echo %GenFile%文件已存在,无需创建!	
        )
    

     

    展开全文
  • Linux shell判断文件或目录是否存在

    万次阅读 2017-10-13 17:05:17
    #!/bin/sh myPath="/var/log/httpd/" ...#这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then  mkdir "$myPath" fi #这里的-d 参数判断$myPath是否存在 if
  • qt 下判断文件或目录是否存在

    万次阅读 2010-09-29 17:23:00
    qt 下判断文件或目录是否存在   bool QFileInfo::exists () const Returns true if the file exists; otherwise returns false.   bool QFileInfo::isDir () const Returns ...
  • 第二步,检测文件或目录是否存在: hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录存在。 二、Java代码实现 import org.apache...
  • 1、前言  工作中涉及到文件系统,有时候需要判断文件目录是否存在。我结合APUE第四章文件和目录,总结一下如何正确判断文件目录是否存在,方便以后查询。 2、stat系列函数  stat函数
  • Python 判断文件/目录是否存在

    千次阅读 2018-08-02 09:24:22
    判断文件是否存在 os.path.isfile(path) 判断目录是否存在 os.path.isdir(path) 判断文件是否存在 # 使用 path 模块 os.path.exists(path) # 使用 access() 方法 os.access(path, os.F_OK) 使用 pathlib ...
  • linux shell 中判断文件目录是否存在
  • linux shell判断文件,目录是否存在或者具有权限
  • shell判断hdfs文件目录是否存在

    万次阅读 2014-08-27 20:47:23
    shell判断hdfs文件目录是否存在
  • 判断文件是否存在 os.path.isfile(path) 判断目录是否存在 os.path.isdir(path) 判断路径是否存在 # 使用 path 模块 os.path.exists(path) # 使用 access() 方法 os.access(path, os.F_OK) 2、使用pathlib 模块 ...
  • Makefile 判断目录或文件是否存在

    千次阅读 2021-02-21 23:13:57
    没找Makefile自带的判断目录或文件是否存在的命令,但我们可以使用shell命令。如: test = $(shell if [ -d $(DIR_TEST) ]; then echo "exist"; else echo "noexist"; fi) $(info $(test)) all: $(TARGET) $(OBJD...
  • 在Linux文件系统中,Shell脚本判断某个文件是否存在: ...Hadoop提供了test命令判断HDFS上某个文件或目录是否存在: [root@node00 ~]# hdfs dfs -help ... -test -[defsz] &lt;path&gt; : ...
  • shell判断文件,目录是否存在或者具有权限  #!/bin/sh  myPath="/var/log/httpd/"  myFile="/var /log/httpd/access.log"  # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限  if [ ! -x ...
  • -----判断文件目录是否存在; fs.access(path[, mode], callback); path:判断的文件名; callback:回调函数;  */ fs.access("./wenjian.txt",function(err){ // 文件和目录存在的情况下;  if(err....
  • shell判断文件或文件夹是否存在

    万次阅读 2016-12-17 15:51:10
    #判断文件存在,判断是否为文件夹等 testPath="/Volumes/MacBookProHD/Mr.Wen/08 shell命令" testFile="/Volumes/MacBookProHD/Mr.Wen/08 shell命令/fileWen" #判断文件夹是否存在 -d if [[ ! -d "$test
  • VC++判断文件或文件夹是否存在

    万次阅读 多人点赞 2016-04-20 22:08:34
    VC++判断文件或文件夹是否存在在Windows应用项目中,几乎总会需要用到一些文件系统相关的函数,如:判断文件是否存在,判断文件夹是否为空,删除文件夹及其所有子项,计算文件夹的大小,等等。不知为何,Windows并未...
  • LINUX SHELL判断文件目录是否存在

    万次阅读 2019-03-29 09:23:37
    目录: path="/home" #if [ ! -d ${path} ];then if [ -d ${path} ];then echo dir ${path} exist! else echo dir ${path} not exist! fi 文件: file="/home/log.txt" if [ -f ${file} ];then echo file...
  • C/C++中判断某一文件或目录是否存在

    千次阅读 2015-07-08 16:12:33
    C/C++中判断某一文件或目录是否存在 C/C++中判断某一文件或目录是否存在   1.C++很简单的一种办法: #include iostream> #include fstream> using namespace std; #define ...
  • PHP如何判断文件目录是否存在

    千次阅读 2014-08-27 16:53:37
    PHP中判断目录或者文件是否存在经常会用到的is_file()、is_dir()、file_exists()... 1)is_file()函数, 用来判断文件是否存在,代码如下:  if(!is_file('test.html')){  echo '文件不存在!';  }else{  
  • shell bash判断文件或文件夹是否存在

    千次阅读 2018-07-06 14:53:54
    #shell判断文件夹是否存在#如果文件夹不存在,创建文件夹if [ ! -d "/myfolder" ]; then mkdir /myfolderfi#shell判断文件,目录是否存在或者具
  • 判断一个文件目录是否存在,可以使用_access或者_stat函数,但是要注意两点: _access能检测给定路径是否存在,但是无法区分这个路径是文件路径还是目录路径,比如指定路径d:\123,如果D盘下存在文件名为123的...
  • 通常,iOS系统中判断文件或者目录是否存在,可以用上面这个API。 第二个参数 isDirectory是个传出参数, 用于返回,是文件还是目录。 一般两种情况会使用这个API 需求一、 判断文件或者目录是否存在 需求二.
  • # 判断是否有upload文件夹,没有则创建,用于存储图片 if [ ! -d "${CRTDIR}/upload" ]; then mkdir ${CRTDIR}/upload fi # 判断是否有logs文件夹,没有则创建,用于存储日志 if [ ! -d "${CRTDIR}/l...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 989,881
精华内容 395,952
关键字:

判断文件或目录是否存在