zoukankan      html  css  js  c++  java
  • 《Advanced Bash-scripting Guide》学习(五):检查一个可执行文件是否存在

    本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅

    ABS书上的例子是这样的:

    #!/bin/bash
    
    echo hello;echo there
    
    if [ -x "$filename" ]; then             #注意分号后面的空格
       echo "File $filename exists."; cp $filename $filename.bak
    else
       echo "File $filename not found."; touch $filename
    fi; echo "File test complete."

    这个脚本有个问题:

    1.filename是个变量,$filename缺乏传入值

    2.-x是检测文件是否存在且具有可执行权限,如果存在且具有可执行权限,为真,但是else之后,仅仅echo文件没有找到,这样不是特别清楚(其实我们也可以认为符合名字叫filename的具有可执行权限的文件不存在,尽管名字叫filename但不具有执行权限的文件是存在的)。为了更清晰的表达,应该分为两种情况:a.文件不存在 b.文件存在但不具有执行权限。


    一个改进的脚本

    #!/bin/bash
    
    echo hello;echo there
    E_ERRORARGS=65
    read -p "please input filename: " -t 30 filename
    
    if [ -z "$filename ]; then                                                             #检查传入的变量值是否为空   
       echo "Usage: `basename $0` filename can't be null."
       exit $E_ERRORARGS
    elif [ -x "$filename ]; then                                                           #检查文件是否存在且具有执行权限
       echo "File $filename exists and have exec power."; cp $filename $filename.bak       #如果文件存在,打印提示语句,并修改文件名
    elif [ -e "$filename ]; then                                                           #检查文件是否存在
       echo "File $filename exists and have no exec power."                                #如果文件存在但不具有可执行权限,打印提示语句
    else
       echo "File $filename not found."; touch $filename                                   #如果文件不存在,创建文件
    fi; echo "File test complete."
    

    脚本运行结果

    我这里在sh下有个存在且具有执行权限的文件123,有个存在但不具有执行权限的文件456,没有文件789(文件789最终会被创建)



    #!


  • 相关阅读:
    bzoj3994:[SDOI2015]约数个数和
    数列分块1-9
    luogu P2059 [JLOI2013]卡牌游戏
    luogu P1623 [CEOI2007]树的匹配Treasury
    博弈论与SG函数
    luogu P1169 [ZJOI2007]棋盘制作
    luogu P1623 [CEOI2007]树的匹配Treasury
    [BZOJ4896][THUSC2016]补退选(Trie)
    [BZOJ3745][COCI2015]Norma(分治)
    [BZOJ5006][LOJ#2290][THUWC2017]随机二分图(概率+状压DP)
  • 原文地址:https://www.cnblogs.com/my_captain/p/7147652.html
Copyright © 2011-2022 走看看