2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型

条件判断,控制结构:
    单分支if语句
        if 判断条件;then(then放下一行可省略“,”)
            statement1
            statement2
            ...
        fi
    双分支的if语句
        if 判断条件;then
            statement1
            statement2
            ...
        else
            statement4
            statement5
            ...
        fi
    多分支的if语句
        if 判断条件1;then
            statement1
            ...
        elif 判断条件2;then
            statement2
            ...
        elif 判断条件3;then
            statement3
            ...
        else
            statement4
            ...
        fi
        
课堂1:写一个脚本
    判断当前系统上是否有用户的默认shell为bash
    如果有,就显示有多少个这类用户,否则,就显示没有这类用户        
    
    【提示】
    1.“引用”一个命令的执行结果,要使用命令引用,比如:RESAULTS=`wc -l /etc/passwd | cut -d: -f1`
    2.使用一个命令的执行结果,要直接执行此命令,一定不能引号,比如:if id user1一句话中的id命令就不能加引号
    3.如果想把一个命令的执行结果赋值给某些变量,要使用命令引用,比如USERRID=・id -uuser1`
    4.如果想把一个命令的执行状态结果保存下来,并作为执行成功与否的判断条件,则需先执行此命令,而后引用其状态结果,如
        id -u user1
        RETVAL=$?
        此句绝不可以写成RESVAL=`id -u user1`
    


课堂2:写一个脚本
    判断当前系统上是否有用户的默认shell为bash
    如果有,就显示其中一个的用户名,否则,就显示没有这类用户    
    

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第1张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第2张图片


课堂3:写一个脚本
    判断/etc/inittab中是否有空白行
    如果有,则显示其空白行数,否则,显示没有空白行
2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第3张图片

课堂4:写一个脚本
    给定一个用户,判断其UID与GID是否一样
    如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”
    (进一步要求:不使用id命令获取其id号)

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第4张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第5张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第6张图片

课堂5:写一个脚本    
    给定一个用户,获取其密码警告期限
    而后判断用户最近一次修改密码时间距今天是否已经小于警告期限
    如果小于,则显示“warning”,否则,就显示"OK"
    【提示】算术运算的方法$[$A-$B]:表示变量A的值减去变量B的值的结果
    圆整:丢弃小数点后的所有内容
    

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第7张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第8张图片


课堂6:写一个脚本
    判定命令历史中历史命令总条目是否大于1000,如果大于,显示“Some command will gone.”,否则显示“OK”.
    (history 只保留最近1000个命令,虽然能看见大于1000个命令)
    

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第9张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第10张图片

shell中如何进行算术运算
    A=3
    B=4
1,let 算术运算表达式
    let C=$[$A+$B]
2,$[算术运算表达式]
    C=$[$A+$B]
3,$((算术运算表达式))
    C=$(($A+$B))
4,expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
    C=`expr $A + $B`
2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第11张图片
退出脚本:exit(1-255都可)
    例如:
    exit 8
    exit #:
       如果脚本没有定义退出状态,那么最后执行的一条命令的退出码即为脚本的退出状态码

测试脚本是否有语法错误:      bash -n
单步执行,显示每一步命令执行结果:  bash -x
    

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第12张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第13张图片

文件测试:[ -e /etc/passwd ]
    -e FILE:测试文件是否存在
    -f FILE:测试文件是否为普通目录
    -d FILE:测试指定路径是否为目录
    -r FILE:测试当前用户对指定文件是否有读取权限
    -w FILE:测试当前用户对指定文件是否有写权限
    -x FILE:测试当前用户对指定文件是否有执行权限
课堂7:写一个脚本
    给定一个文件,如果是普通文件,就显示之
    如果给定一个目录,亦显示之
    否则,此为无法识别的文件

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第14张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第15张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第16张图片


bash变量类型
        环境变量
        本地变量
        位置变量
        特殊变量
    
    本地变量
        VARNAME=VALUE:作用域为整个bash进程
    局部变量
        local VARNAME=VALUE:作用域为当前代码段
    环境变量:作用域为当前shell进程及其子进程:
        export VARNAME=VALUE
        
        VARNAME=VALUE
        export VARNAME
            "导出"
    位置变量
        ./filetest.sh  /etc/fsttab  /etc/inittab
        $1: /etc/fsttab
        $2: /etc/inittab
        ……

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第17张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第18张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第19张图片

        shift:默认踢去第一个参数(第二个参数变成第一个参数)
            shift n :踢掉n个参数
                shift 2(第三个参数变成第一个参数)

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第20张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第21张图片

    特殊变量
    $? : 上一个命令的执行状态返回值
        程序执行,有两类返回值
        程序执行结果
        程序转态返回代码(0-255)
        0:正确执行
        1-255:错误执行  1,2,127系统预留
    $#:参数的个数
        如果不是大于等于1,就要加参数(提示用户加参数)    
    

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第22张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第23张图片


课堂8,写一个脚本
    给脚本传递两个参数(整数)
    显示此两者之和,之积

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第24张图片

2016-3-6 linux基础学习13――条件判断、文件测试、bash变量类型_第25张图片


你可能感兴趣的:(bash,条件判断,文件测试)