一点例子:

#!/bin/bash

# test-file: Evaluate the status of a file FILE=~/.bashrc

if [ -e "$FILE" ]; then

    if [ -f "$FILE" ]; then

      echo "$FILE is a regular file."

    fi

    if [ -d "$FILE" ]; then

      echo "$FILE is a directory."

    fi

    if [ -r "$FILE" ]; then

      echo "$FILE is readable."

    fi

    if [ -w "$FILE" ]; then

      echo "$FILE is writable."

    fi

    if [ -x "$FILE" ]; then

      echo "$FILE is executable/searchable."

    fi

else

  echo "$FILE does not exist" exit 1

fi

exit

   这个脚本会计算赋值给常量 FILE 的文件,并显示计算结果。对于此脚本有两点需要注意。
第一个,在表达式中参数 $FILE 是怎样被引用的。引号并不是必需的,但这是为了防范空参
数。如果 $FILE 的参数展开是一个空值,就会导致一个错误(操作符将会被解释为非空的字
符串而不是操作符)。用引号把参数引起来就确保了操作符之后总是跟随着一个字符串,即使
字符串为空。第二个,注意脚本末尾的 exit 命令。这个 exit 命令接受一个单独的,可选的参
数,其成为脚本的退出状态。当不传递参数时,退出状态默认为零。以这种方式使用 exit 命
令,则允许此脚本提示失败如果 $FILE 展开成一个不存在的文件名。这个 exit 命令出现在脚
本中的最后一行,是一个当一个脚本“运行到最后”(到达文件末尾),不管怎样,默认情况下
它以退出状态零终止。
类似地,通过带有一个整数参数的 return 命令,shell 函数可以返回一个退出状态。如果我
们打算把上面的脚本转变为一个 shell 函数,为了在更大的程序中包含此函数,我们用 return
语句来代替 exit 命令,则得到期望的行为:

test_file () {
  FILE=~/.bashrc
  if [ -e "$FILE" ]; then
    if [ -f "$FILE" ]; then
      echo "$FILE is a regular file."
    fi
    if [ -d "$FILE" ]; then
      echo "$FILE is a directory."
    fi
    if [ -r "$FILE" ]; then
      echo "$FILE is readable."
    fi
    if [ -w "$FILE" ]; then
      echo "$FILE is writable."
    fi
    if [ -x "$FILE" ]; then
      echo "$FILE is executable/searchable."
    fi
  else
    echo "$FILE does not exist"
    return 1
  fi
}

bash-文件表达式的更多相关文章

  1. 【266】增加bash文件的执行权限

    正常需要通过[bash pass.sh]来执行文件,但是可以通过增加bash文件的执行权限实现通过[./pass.sh]或者[pass.sh]来执行文件. 方法:通过chmod来增加权限,下面四种方法 ...

  2. bash if 表达式

    .bash把[[ $a -lt $b ]]看作一个单独的元素,并且返回一个退出码.退出码0为真,非零为假 例如: a= b=c [[ $a -lt $b ]] echo $? # a小于b为真 [[ ...

  3. bash文件的详细解读

    一.bash的分类 1. 按生效范围分类 全局生效 /etc/profile /etc/profile.d/*.sh /etc/bashrc 个人用户生效 ~/.bash_profile ~/.bas ...

  4. Bash 文件夹操作

    mkdir, rm,find都是对tree结构的文件夹进行的操作,可以安装tree用tree命令直接打印出树的结构 文件夹的操作分为只操作当前文件夹的集合数据和迭代操作的tree数据 Bash迭代当前 ...

  5. 【mac相关bash文件】

    mac 下 关于 .bashrc 和 .bash_profile 1.首先.bashrc 可能自带的系统里没有这个文件. 2.bash_profile  里边一半放的是PATH相关. 3. .bash ...

  6. bash if 表达式含义

    [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真. [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真. [ ...

  7. bash 文件头尾插入字符

    头部插入:sed -i '1i\Insert this line' file.txt 尾部插入:echo "hehe"  >> tmp.txt

  8. shell bash使用,包括判断文件或文件夹是否存在举例

    Linux shell编程——if条件判断 if [ condition ] ;then //一定要注意[] 與裡面的內容要有空格隔开 例如 if [(空格)${a} -eq 3(空格)]; then ...

  9. Bash 翻译

    Bash参考手册 目录 1简介 1.1什么是Bash? 1.2什么是shell? 2定义 3基本外壳功能 3.1 Shell语法 3.1.1外壳操作 3.1.2报价 3.1.2.1逃逸角色 3.1.2 ...

  10. bash參考手冊之六(Bash特性)

    6 Bash 特性 这部分描写叙述Bash独有的特性. *  调用Bash : Bash能够接受的命令行选项. *  Bash启动文件 : Bash何时及怎样运行脚本. *  交互Shell : 什么 ...

随机推荐

  1. Python高级教程-多重继承

    多重继承 继承是面向对象编程的一个重要的方式,因为通过继承,子类可以扩展父类的功能. Animal类的层次设计,假设要实现以下4中动物: Dog - 狗狗: Bat - 蝙蝠: Parrot - 鹦鹉 ...

  2. 001-hive是什么

    一.基本概念 官网含义:https://cwiki.apache.org/confluence/display/Hive/Home The Apache Hive™ data warehouse so ...

  3. 21.如何将java类对象转化为json字符串

    使用阿里巴巴的fastJson 下载链接: 链接: https://pan.baidu.com/s/1dHjLOm1 密码: rr3w 用法如下: User user = new User(); us ...

  4. python中的编解码小结

    在用python27写文件或者上传文件时遇到这样一个问题:.在网上搜了下说加入以下三行代码可以解决: import sys reload(sys) sys.setdefaultencoding('ut ...

  5. genymotion——在虚拟机中当中安装genymotion,启动已经新增好的设备时,提示:the virtual device got no ip address

    1.启动已经新增好的设备时,提示:the virtual device got no ip address,于是在网上搜索该问题,便得到提示,先启动virtual box中的该模拟设备,于是便启动,出 ...

  6. 使用Spring注解获取配置文件信息

    需要加载的配置文件内容(resource.properties): #FTP相关配置 #FTP的IP地址 FTP_ADDRESS=192.168.1.121 FTP_PORT=21 FTP_USERN ...

  7. PHPCMS新闻内容调用方法介绍

    {template "content","header"} ---------- 调用根目录下phpcms\template\content\header文件 ...

  8. 2016-2017 National Taiwan University World Final Team Selection Contest J - Zero Game

    题目: You are given one string S consisting of only '0' and '1'. You are bored, so you start to play w ...

  9. Unity状态机的实现,以《塔防》为例

    什么是有限状态机? 通俗点讲,有限状态机是:将对象的状态(攻击.闲置.晕眩)的实现代码,提取出来,封装成状态.由状态机负责在各个状态之间调度. 对象持有状态管理类(状态机)的引用,与具体的状态解耦. ...

  10. Android4.0 Surface机制分析

    1. java层面的Surface     对于Surface我们的认识主要是android的类Surface, android的文档描述Surface是"Handle onto a raw ...