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
    
  • 相关阅读:
    js 时差转换 getTimezoneOffset()
    js 验证对象是否为数组
    mac下的一些mysql操作
    mac下mysql 1045 (28000): Access denied for user 'root'@'localhost' (using password:
    canvas 画布 文字描边
    background-size: contain 与cover的区别,以及ie78的兼容写法
    tortoisegit 常见错误disconnected no supported authentication methods available(server sent: publickey)
    windows 下git 的配置安装与使用
    Spring中Bean的生命周期
    HBase--DependentColumnFilter(参考例过滤器 )详解
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/7147766.html
Copyright © 2011-2022 走看看