zoukankan      html  css  js  c++  java
  • shell常用判断条件if

    一、文件判断

    -r file     用户可读为真 
    -w file     用户可写为真 
    -x file     用户可执行为真 
    -f file     文件为正规文件为真 
    -d file     文件为目录为真 
    -c file     文件为字符特殊文件为真 
    -b file     文件为块特殊文件为真 
    -s file     文件大小非0时为真 
    -t file     当文件描述符(默认为1)指定的设备为终端时为真

    判断目录是否存在,不存在创建目录。

    [root@test ~]# cat shell.sh 
    #!/bin/sh
    
    file_shell="/shell"
    if [ ! -d "$file_shell" ];then
      mkdir "$file_shell"
      if [ $? -eq 0 ];then
        echo "创建目录$file_shell成功!"
      fi
    fi
    [root@test ~]# sh shell.sh 
    创建目录/shell成功!
    [root@test /]# ls -lt
    总用量 94
    drwxr-xr-x.  7 root root     0 5月   5 2017 selinux
    drwxr-xr-x. 13 root root     0 5月   5 2017 sys
    dr-xr-xr-x. 98 root root     0 5月   5 2017 proc
    drwxr-xr-x.  2 root root  4096 5月   5 09:59 shell
    dr-xr-x---.  3 root root  4096 5月   5 09:56 root
    drwxr-xr-x. 17 root root  3680 5月   5 09:41 dev
    drwxr-xr-x. 72 root root  4096 5月   5 09:41 etc  
    

      

    判断根目录下的shell目录是否有执行权限,没有则赋予执行权限。

    [root@test ~]# cat shell.sh 
    #!/bin/sh
    
    file_shell="/root/shell"
    if [ ! -x "$file_shell" ]; then
      echo "$file_shell没有执行权限!"
      chmod +x "$file_shell"
      if [ $? -eq 0 ];then
        echo "给$file_shell添加执行权限成功!"
      fi
    fi
    [root@test ~]# ls -lh /shell/
    总用量 4.0K
    -rw-r--r--. 1 root root 71 5月   5 10:08 test.sh
    [root@test ~]# 
    

    二、数字判断

    int1 -eq int2    两数相等为真 
    int1 -ne int2    两数不等为真 
    int1 -gt int2    int1大于int2为真 
    int1 -ge int2    int1大于等于int2为真 
    int1 -lt int2    int1小于int2为真 
    int1 -le int2    int1小于等于int2为真

    三、字符串判断

    str1 = str2      当两个串有相同内容、长度时为真 
    str1 != str2      当串str1和str2不等时为真 
    -n str1        当串的长度大于0时为真(串非空) 
    -z str1        当串的长度为0时为真(空串) 
    str1           当串str1为非空时为真

    四、复杂逻辑判断

    -a         与 
    -o        或 
    !        非

     变量a等于aa且变量b等于bb 或者 变量c等于cc且变量d等于dd 这样的条件成立的话,输出success

    [root@test ~]# sh shell.sh 
    success
    [root@test ~]# cat shell.sh 
    #!/bin/shell
    a="aa"
    b="bb"
    c="cc"
    d="dd"
    
    if [ $a = "aa" -a $b = "bb" ] || [$c = "cc" -a $d = "dd" ];
    then
      echo "success"
    fi
    

      

    五、常用参数,文件/目录判断

    [ -a FILE ] 如果 FILE 存在则为真。
    [ -b FILE ] 如果 FILE 存在且是一个块文件则返回为真。
    [ -c FILE ] 如果 FILE 存在且是一个字符文件则返回为真。
    [ -d FILE ] 如果 FILE 存在且是一个目录则返回为真。
    [ -e FILE ] 如果 指定的文件或目录存在时返回为真。
    [ -f FILE ] 如果 FILE 存在且是一个普通文件则返回为真。
    [ -g FILE ] 如果 FILE 存在且设置了SGID则返回为真。
    [ -h FILE ] 如果 FILE 存在且是一个符号符号链接文件则返回为真。(该选项在一些老系统上无效)
    [ -k FILE ] 如果 FILE 存在且已经设置了冒险位则返回为真。
    [ -p FILE ] 如果 FILE 存并且是命令管道时返回为真。
    [ -r FILE ] 如果 FILE 存在且是可读的则返回为真。
    [ -s FILE ] 如果 FILE 存在且大小非0时为真则返回为真。
    [ -u FILE ] 如果 FILE 存在且设置了SUID位时返回为真。
    [ -w FILE ] 如果 FILE 存在且是可写的则返回为真。(一个目录为了它的内容被访问必然是可执行的)
    [ -x FILE ] 如果 FILE 存在且是可执行的则返回为真。
    [ -O FILE ] 如果 FILE 存在且属有效用户ID则返回为真。
    [ -G FILE ] 如果 FILE 存在且默认组为当前组则返回为真。(只检查系统默认组)
    [ -L FILE ] 如果 FILE 存在且是一个符号连接则返回为真。
    [ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则返回为真。
    [ -S FILE ] 如果 FILE 存在且是一个套接字则返回为真。
    [ FILE1 -nt FILE2 ] 如果 FILE1 比 FILE2 新, 或者 FILE1 存在但是 FILE2 不存在则返回为真。
    [ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 老, 或者 FILE2 存在但是 FILE1 不存在则返回为真。
    [ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则返回为真。

  • 相关阅读:
    python selenium 弹框元素获取
    python小知识点
    ubuntu下配置java环境变量
    用Filezilla往ubuntu虚拟机上传文件
    jmeter,监控插件
    fiddler接口测试
    ZeroClipboard 复制到剪贴板 中文文档
    常用正则表达式
    中英文字体对照 ueditor添加字体
    字符串操作
  • 原文地址:https://www.cnblogs.com/menglingqian/p/6811718.html
Copyright © 2011-2022 走看看