zoukankan      html  css  js  c++  java
  • shell编程值之shell流程控制(7)

    条件判断式

    1 按照文件类型判断(常用类型)
    测试类型 作用
    -d 文件 判断该文件是否存在,并且是否为目录文件(是目录文件为真)
    -e 文件 判断该文件是否存在(存在为真)
    -f 文件 判断该文件是否存在,并且是否为普通文件(是普通文件为真)
    [-d /root] && echo 'yes' || 'no']
    
    判断/root是否为一个目录,是打印yes不是打印no
    
    2 两种判断格式
      test -e /root/install.log
      
      [-e /root/install.log]
    
    2 两个文件之间进行比较
    测试选项 作用
    文件1 -nt 文件2 判断文件1的修改时间是否比文件2的新(如果新为真)
    文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧(如果旧为真)
    文件1 -ef 文件2 判断文件1是否和文件2 的inode好一直,可以理解为两个文件是否为通一个文件。这个判断用于判断硬连接是很好的方法
    2 两个整数之间的比较
    测试选项 作用
    -eq 是否相等
    -ne 是否不相等
    -gt 是否大于
    -lt 是否小于
    -ge 是否大于等于
    -le 是否小于等于
    3 字符串的判断
    测试选项 作用
    -z 字符串 判断字符串是否为空
    -n 字符串 判断字符串是否为非空
    == 是否相等
    != 不相等
    4 多重条件判断
    测试选项 作用
    判断1 -a 判断2 逻辑与,两个都为真,还为真
    判断1 -o 判断2 逻辑或,有一个为真就为真
    !判断 逻辑非,取反

    单分支if语句

    if [条件判断式]; then
        程序
    fi
    
    或者
    
    if [条件判断式]
        then
        程序
    fi
        
    

    判断登陆的用户是否root

    #!/bin/bash
    
    test=$(env | grep "USER" | cut -d "=" -f2)
    
    if ["$test" == root] 
        then
        echo 'user is root'
    fi    
    

    双分支if语句

    if [条件判断式]
        then
            成立
        else
            不成立
    fi
        
    

    多分支if语句

    if [条件判断式]
        then
            成立
    elif [条件判断式2]
        then
            
    else
            不成立
    fi
        
    

    case语句

    case $变量名 in
        "值1")
            程序1
            ;;
        "值2")
            程序2
            ;;
        "值3")
            程序3
            ;;   
    esac        
    

    判断用户输入

    #!/bin/bash
    
    read -p 'please choose yes/no' -t 30 cho
    
    case $cho in
        'yes')
            echo 'yes'
            ;;
        'no')
            echo 'no'
        *)
            echo $cho
            ;;
    esac        
    

    for循环

    语法1
    for 变量 in 值1 值2 值3 
        do
        
        done
        
    语法2
    
    for((初始值;循环控制条件;变量变化)) 
        do
            程序
        done
    

    批量解压缩文件

    #!/bin/bash
    
    cd /root/test
    ls *.tar.gz > ls.log
    for i in $(cat ls.log)
        do
            tar -zxf $i &>/dev/null
        done
    rm -rf /lamp/ls.log    
    

    从1加到100

    #!/bin/bash
    s=0 
    for((i=1;i<=100;i=i+1))
        do
            s=$(($s+$i))
        done    
        
    

    while循环和util循环

    从1加到100

    #!/bin/bash
    i=1
    s=0
    while [ $i -le 100 ]
        do
            s=$(($s+$i))
            i=$(($i+1))
        done
    
  • 相关阅读:
    关于Maya Viewport 2.0 API 开发的介绍视频
    春节大假
    Some tips about the life cycle of Maya thread pool
    Can I compile and run Dx11Shader for Maya 2015 on my side?
    How to get current deformed vertex positions in MoBu?
    想加入全球首届的 欧特克云加速计划吗?
    三本毕业(非科班),四次阿里巴巴面试,终拿 offer(大厂面经)
    mac、window版编辑器 webstorm 2016... 永久破解方法。
    node 搭载本地代理,处理web本地开发跨域问题
    js 一维数组,转成嵌套数组
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/7147766.html
Copyright © 2011-2022 走看看