精华内容
下载资源
问答
  • Shell test命令

    千次阅读 2016-08-30 22:11:43
    概述Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。或者使用 [ ] 来判断数值测试#!/bin/bash num1=100 num2=100 if test $[num1] -eq $[num2] then echo '两个数相等!...

    概述

    Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

    或者使用 [ ] 来判断


    数值测试

    这里写图片描述

    #!/bin/bash
    num1=100
    num2=100
    if test $[num1] -eq $[num2]
    then
        echo '两个数相等!'
    else
        echo '两个数不相等!'
    fi

    输出结果:

    两个数相等!
    test 整数1 -eq 整数2 #整数相等 
    
    test 整数1 -ge 整数2 #整数1大于等于整数2 
    
    test 整数1 -gt 整数2 #整数1大于整数2 
    
    test 整数1 -le 整数2 #整数1小于等于整数2 
    
    test 整数1 -lt 整数2 #整数1小于整数2 
    
    test 整数1 -ne 整数2 #整数1不等于整数2

    字符串测试

    这里写图片描述

    #!/bin/bash
    num1="xiaogongjiang"
    num2="xiaogongjiang"
    if test num1=num2
    then
        echo '两个字符串相等!'
    else
        echo '两个字符串不相等!'
    fi

    输出结果:

    两个字符串相等!
    
    test –n 字符串 #字符串的长度非零 
    
    test –z 字符串 #字符串的长度是否为零 
    
    test 字符串1=字符串2 #字符串是否相等,若相等返回true 
    
    test 字符串1!=字符串2 #字符串是否不等,若不等反悔false

    文件测试

    这里写图片描述

    #!/bin/bash
    
    cd /bin
    if test -e ./bash
    then
        echo '文件已存在!'
    else
        echo '文件不存在!'
    fi

    输出结果:

    文件已存在!

    另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:”!”最高,”-a”次之,”-o”最低。例如:

    cd /bin
    if test -e ./notFile -o -e ./bash
    then
        echo '有一个文件存在!'
    else
        echo '两个文件都不存在'
    fi

    输出结果:

    有一个文件存在!
     test File1 –ef File2 #两个文件是否为同一个文件,可用于硬连接。主要判断两个文件是否指向同一个inode。
    
     test File1 –nt File2 #判断文件1是否比文件2新 
    
     test File1 –ot File2 #判断文件1比是否文件2旧 
    
     test –b file #文件是否块设备文件 
    
     test –c File #文件并且是字符设备文件 
    
     test –d File #文件并且是目录 
    
     test –e File #文件是否存在 (常用)
    
     test –f File #文件是否为正规文件 (常用)
    
     test –g File #文件是否是设置了组id 
    
     test –G File #文件属于的有效组ID 
    
     test –h File #文件是否是一个符号链接(同-L)
    
     test –k File #文件是否设置了Sticky bit位
    
     test –b File #文件存在并且是块设备文件 
    
     test –L File #文件是否是一个符号链接(同-h) 
    
     test –o File #文件的属于有效用户ID 
    
     test –p File #文件是一个命名管道 
    
     test –r File #文件是否可读 
    
     test –s File #文件是否是非空白文件 
    
     test –t FD #文件描述符是在一个终端打开的 
    
     test –u File #文件存在并且设置了它的set-user-id位 
    
     test –w File #文件是否存在并可写 
    
     test –x File #文件属否存在并可执行
    

    判断表达式

    if test #表达式为真 
    
    if test ! #表达式为假 
    
    test 表达式1a 表达式2 #两个表达式都为真 
    
    test 表达式1 –o 表达式2 #两个表达式有一个为真 
    
    test 表达式1 ! 表达式2 #条件求反
    展开全文
  • Shell test 命令

    千次阅读 2018-05-01 23:29:51
    Shell test 命令Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。数值测试参数说明-eq等于则为真-ne不等于则为真-gt大于则为真-ge大于等于则为真-lt小于则为真-le小于等于...

    Shell test 命令

    Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。


    数值测试

    参数说明
    -eq等于则为真
    -ne不等于则为真
    -gt大于则为真
    -ge大于等于则为真
    -lt小于则为真
    -le小于等于则为真

    实例演示:

    num1=100
    num2=100
    if test $[num1] -eq $[num2]
    then
        echo '两个数相等!'
    else
        echo '两个数不相等!'
    fi

    输出结果:

    两个数相等!

    代码中的 [] 执行基本的算数运算,如:

    #!/bin/bash
    
    a=5
    b=6
    
    result=$[a+b] # 注意等号两边不能有空格
    echo "result 为: $result"

    结果为:

    result 为: 11

    字符串测试

    参数说明
    =等于则为真
    !=不相等则为真
    -z 字符串字符串的长度为零则为真
    -n 字符串字符串的长度不为零则为真

    实例演示:

    num1="ru1noob"
    num2="runoob"
    if test $num1 = $num2
    then
        echo '两个字符串相等!'
    else
        echo '两个字符串不相等!'
    fi

    输出结果:

    两个字符串不相等!

    文件测试

    参数说明
    -e 文件名如果文件存在则为真
    -r 文件名如果文件存在且可读则为真
    -w 文件名如果文件存在且可写则为真
    -x 文件名如果文件存在且可执行则为真
    -s 文件名如果文件存在且至少有一个字符则为真
    -d 文件名如果文件存在且为目录则为真
    -f 文件名如果文件存在且为普通文件则为真
    -c 文件名如果文件存在且为字符型特殊文件则为真
    -b 文件名如果文件存在且为块特殊文件则为真

    实例演示:

    cd /bin
    if test -e ./bash
    then
        echo '文件已存在!'
    else
        echo '文件不存在!'
    fi

    输出结果:

    文件已存在!

    另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。例如:

    cd /bin
    if test -e ./notFile -o -e ./bash
    then
        echo '至少有一个文件存在!'
    else
        echo '两个文件都不存在'
    fi

    输出结果:

    至少有一个文件存在!
    展开全文
  • shell test和find命令实例解析

    千次阅读 2016-09-28 11:14:11
    shell test和find命令实例解析 下面以\build\core\product.mk相关部分来学习define _find-android-products-files $(shell test -ddevice && find device -maxdepth 6 -name AndroidProducts.mk) \ $(shell test -...

    shell test和find命令实例解析

     

    下面以\build\core\product.mk相关部分来学习

    define _find-android-products-files
    $(shell test -ddevice && find device -maxdepth 6 -name AndroidProducts.mk) \
     $(shell test -d vendor && find vendor -maxdepth 6 -nameAndroidProducts.mk) \
     $(SRC_TARGET_DIR)/product/AndroidProducts.mk
    Endef

    Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试,这方面参考http://www.runoob.com/linux/linux-shell-test.html

     

    上面例子同时也用到了find命令

    test -d device&& find device -maxdepth 6 -name AndroidProducts.mk

    test -d device表示如果device存在且为目录则为真,则会执行find命令find命令在device目录下,最大深入6层子目录来查找名字为AndroidProducts.mk的文件

     

    对于find命令,在-之前的字符串表示path(目录,这里是device),之后是expression(表达式,这里是-maxdepth 6 -name AndroidProducts.mk),

     

    -maxdepth 6  设定递归搜索的目录层级,1为在当前目录下,即不递归搜索。

    -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

     

    find命令找到AndroidProducts.mk后将查找到的子目录和文件全部进行显示,这就是find命令的输出,比如我在device下find的结果



    图1

     

     

    这里shell是函数,它的参数是操作系统Shell的命令,比如test,shell函数把执行命令后的输出作为函数返回,上面命令包的作用是在device、vendor目录下查AndroidProducts.mk,把device、vendor和(SRC_TARGET_DIR)/product/AndroidProducts.mk所在子目录和文件全部进行显示

     

    命令包_find-android-products-files的值是AndroidProducts.mk文件列表,见上图

    展开全文
  • shell test 参数

    千次阅读 2008-03-27 09:33:00
    引用 2 楼 mymtom 的回复: 引用 1 楼 littlefirebug 的回复: $1表示shell执行时传入的第一个参数 那么[ $1 -a -s $1 ]表示你正确输入了第一个参数并且该参数表示的文件大小不为0 楼上正解, 不过需要注意...
    引用 2 楼 mymtom 的回复:
    引用 1 楼 littlefirebug 的回复:
    $1表示shell执行时传入的第一个参数
    那么[ $1 -a -s $1 ]表示你正确输入了第一个参数并且该参数表示的文件大小不为0

    楼上正解, 不过需要注意左方括号右边和右方括号左边一定要有空白字符.
    而且这种形式只使用用bash, 不是所有的sh和ksh都支持这种形式.
    if [ "$1" -a -s "$1" ]; then
    cat $1
    fi
    的形式各种shell都能支持.

    应该改为
    Perl code
       

    # ! /bin/sh
    if [ " $1 " - a - s " $1 " ]; then
    cat
    " $1 "
    fi


    否则如果文件名中有空格的时候会出错.

    ====================================================================================

    语法

    test Expression

    [ Expression ]

    描述

    test 命令评估 Expression 参数, 如果表达式值为 True,返回一个零(true)退出值。否则, test 命令返回一个非零(false)退出值。 如果没有参数,test 命令也返回一个非零退出值。

    注:

    1. 在命令的第二种格式中,[ ](方括号)必须被空白包围。

    2. 必须在 C shell 中对文件名进行显式测试。文件名替换(全局)导致 shell 脚本退出。

    函数与运算符被 test 命令当作独立的参数。Expression 参数指的是一个需要被检查为 true false 的条件的语句。下列函数可用来构造此参数:

    -b FileName

    如果所指定的 FileName 存在且是一个块特殊文件,则返回一个 true 退出值。

    -c FileName

    如果所指定的 FileName 存在且是一个字符特殊文件,则返回一个 true 退出值。

    -d FileName

    如果所指定的 FileName 存在且是一个目录,则返回一个 true 退出值。

    -e FileName

    如果所指定的 FileName 存在,则返回一个 true 退出值。

    -f FileName

    如果所指定的 FileName 存在且是一个常规文件,则返回一个 true 退出值。

    -g FileName

    如果所指定的 FileName 存在且它的设置组标识位已设置,则返回一个 true 退出值。

    -h FileName

    如果所指定的 FileName 存在且是一个符号链接,则返回一个 true 退出值。

    -k FileName

    如果所指定的 FileName 存在且其粘滞位已设置,则返回一个 true 退出值。

    -L FileName

    如果所指定的 FileName 存在且是一个符号链接,则返回一个 true 退出值。

    -n String1

    如果 String1 变量的长度为非零,则返回一个 true 退出值。

    -p FileName

    如果所指定的 FileName 存在且是一个命名管道(FIFO),则返回一个 true 退出值。

    -r FileName

    如果所指定的 FileName 存在且可被当前进程读取,则返回一个 true 退出值。

    -s FileName

    如果所指定的 FileName 存在且长度大于零,则返回一个 true 退出值。

    -t FileDescriptor

    如果文件描述符号为 FileDescriptor 的文件是打开的且与一个终端相连,则返回一个 true 退出值。

    -u FileName

    如果所指定的 FileName 存在且它的设置用户标识位已被设置,则返回一个 true 退出值。

    -w FileName

    如果所指定的 FileName 存在且写标志打开,则返回一个 true 退出值。 但是,FileName 在一个只读的文件系统中不可写,即使 test 指示为 true。

    -x FileName

    如果所指定的FileName 存在且执行标志打开,则返回一个 true 退出值。如果所指定的文件存在且是一个目录,true 退出值表示当前进程被允许在目录中搜索。

    -z String1

    如果 String1 变量的长度为 0(零),则返回一个 true 退出值。

    String1= String2

    如果 String1String2 的变量相同,则返回一个 true 退出值。

    String1!=String2

    如果 String1String2 的变量不相同,则返回一个 true 退出值。

    String1

    如果 String1 变量不是一个空字符串,则返回一个 true 退出值。

    Integer1 -eq Integer2

    如果Integer1Integer2 的变量在数学上相等,则返回一个 true 退出值。任一比较 -ne, -gt, -ge, -lt, -le 可被用来代替 -eq

    file1 -nt file2

    如果 file1file2 更新,则为 true。

    file1 -ot file2

    如果file1file2 旧,则为 true。

    file1 -ef file2

    如果 file1file2 的另外一个名称,则为 true。

    这些函数可与下列运算符连在一起:

    !

    一元“非”运算符

    -a

    二进制“与”运算符

    -o

    二进制“或”运算符(就是说, -a 运算符的优先权比 -o 运算符高)

    /(Expression/)

    分组括号

    退出状态

    命令返回以下退出值:

    0

    Expression 参数为 true。

    1

    Expression 参数为 false 或丢失。

    >1

    发生错误。

    示例

    1. 为测试一个文件是否存在且非空, 输入:

     2.       
     if test ! -s "$1"
      
     3.       
     then
      
     4.       
        echo $1 does not exist or is empty.
      
    fi
      

    如果被第一个位置的参数指定给 shell 过程的文件, $1, 不存在, test 命令显示一条出错消息。如果 $1 存在且大小大于 0test 命令什么也不显示。

    注:-s 函数与文件名之间必须有一空格

    $1 两边的引号确保即使值 $1 为一空字符串, test 也可正常工作。如果引号被省略且 $1 是空字符串,test 命令显示出错消息 test:期望参数。

    5. 为做一复杂比较,输入:

     6.       
     if [ $# -lt 2  -o  ! -e "$1" ]
      
     7.       
     then
      
     8.       
        exit
      
    fi
      

    如果给出的 shell 过程少于两个位置参数或被 $1 指定的文件不存在,则 shell 过程退出。特殊 shell 变量 $# 表示了在命令行输入的用以运行 shell 过程的位置参数的个数。

    展开全文
  • SHELL test [ 命令用法

    万次阅读 2012-04-05 10:27:23
    原文地址:... test命令用法。功能:检查文件和比较值  1)判断表达式  if test (表达式为真)  if test !表达式为假  test 表达式1 –a 表达式2 两个表达式都为真  test 表达式1 –o 表达式2
  • shelltest用法

    千次阅读 2015-12-03 22:22:37
    1)判断表达式 if test (表达式为真) if test ...表达式为假 test 表达式1 –a 表达式2 两个表达式都为真 test 表达式1 –o 表达式2 两个表达式有一个为真 2)判断字符串 test –n 字符串 字符串的长度非零 test –z 字
  • shell判断hdfs文件目录是否存在

    万次阅读 2014-08-27 20:47:23
    shell判断hdfs文件目录是否存在
  • test命令是shell环境中测试条件表达式的实用工具,下面来看看test命令的用法介绍: 语法 test(选项) 选项 -b<文件>:如果文件为一个块特殊文件,则为真; -c<文件>:如果文件为一个字符特殊文件,则为真...
  • 下面的shell脚本实现的功能是,先检查某一目录是否存在,不存在的话就创建此目录存在的话就cd到这个目录下。 #!/bin/bash #指定用到的shell解释器 export myPath=/tmp/test #设置目录的值 if [[ ! -e ${...
  • shelltest命令用法详解

    千次阅读 2017-05-21 11:26:46
    test命令用法。功能:检查文件和比较值  1)判断表达式 if test (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2 两个表达式都为真 test 表达式1 –o 表达式2 两个表达式有一个为真 2)判断...
  • shell test -n中细节的用法

    千次阅读 2011-08-01 18:24:19
    #!/bin/bash #Add the hostname ...read -p "Please input your ...那么我们想想:它存在,具体是存在在哪里呢,这就是关键,也因此可见 flage 的重要性,另外 $ flag e 是变量,所以 必须加上引号 !  
  • Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 -...
  • wangshumin@machine2:~$ wangshumin@machine2:~$ vim testwangshumin@machine2:~$ sh testnot exitwangshumin@machine2:~$ sh testnot exitwangshumin@machine2:~$ sh testnot exitwangshumin@machine2:~$ cat ...
  • Shell中if-test命令

    千次阅读 2020-02-15 19:49:28
    testshell内置命令,用来检测某个条件是否成立 test通常和if语句一起使用,并且大部分if语句都依赖test shell test命令的用法有两种: 第一种: test expression #当test判断expression成立时,退出状态为0,否则...
  • 创建一个shell脚本 命名为test.sh #!/bin/sh #判断目录是否存在 if [ ! -d "netperf-2.7.0/" ] then echo "目录存在" else echo "目录存在" fi #判断文件是否存在 if [ ! -f &...
  • 判断目录是否为空 #!/bin/sh echo "----------$(date +%Y年%m月%d日' '%T)测试(test.sh)----------" BAK=/opt/sh/test ##判断目录是否为空,为空则删除 if [ "`ls -A ${BAK}`" = "&...
  • LINUX SHELL中的TEST命令

    千次阅读 2010-09-24 19:46:00
    LINUX SHELL中的TEST命令
  • hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; ...
  • shell if语句和test命令

    千次阅读 2017-09-10 17:28:09
    shell中if条件判断语句和我们的C、C++、Java等语言是不同的,shell的if语句条件必须用[ ]括起来,另外[ ]里外都需要用空格与周围隔开(例如[ a==b ]),否则报错;另外与if配对的有else if和else,如果我们要写这两...
  • linux shell 学习之路---test判断是否为目录 #!/bin/bash if test -d "temp"  then   echo "temp is a directory" else  echo "temp is not a directory" fi 说明:如果temp是目录则输出temp is a directory...
  • 本文主要记录一波linux中shell脚本用if语句判断文件或目录是否存在,并且以jenkins自动发布覆盖项目和历史版本记录为例,让大家跟好的理解shell脚本的灵活。 二、基础知识 1.脚本注意要点: .sh结尾的开头要加...
  • linux shell编程学习--test测试比较命令

    千次阅读 2016-05-14 12:57:18
    本文介绍了linux shell自带test命令的各种用法。在linux shell编程过程中,如何使用test命令进行算术比较,文件属性,文件修改,字符串比较,以及逻辑表达式运算的操作。
  • 在Linux文件系统中,Shell脚本判断某个文件是否存在: ...Hadoop提供了test命令判断HDFS上某个文件或目录是否存在: [root@node00 ~]# hdfs dfs -help ... -test -[defsz] &lt;path&gt; : ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,224
精华内容 63,689
关键字:

shelltest目录存在