• linux-bash编程(条件测试和特殊变量)


    (1)
    整数测试

    INT1=63
    INT2=77
    [ $INT1 -eq $INI2 ]
    [[ $INT1 -eq $INT2 ]]
    test $INT1 -eq $INT2 

    文件测试:
    -e FILE:测试文件是否存在
    -f FILE: 测试文件是否为普通文件
    -d FILE: 测试指定路径是否为目录
    -r FILE: 测试当前用户对指定文件是否有读取权限;
    -w
    -x //测试文件可否执行。

    -e filename 如果 filename存在,则为真
    -d filename 如果 filename为目录,则为真
    -f filename 如果 filename为常规文件,则为真
    -L filename 如果 filename为符号链接,则为真
    -r filename 如果 filename可读,则为真
    -w filename 如果 filename可写,则为真
    -x filename 如果 filename可执行,则为真
    -s filename 如果文件长度不为0,则为真
    -h filename 如果文件是软链接,则为真

    [ -e /etc/inittab ]
    [ -x /etc/rc.d/rc.sysinit ]

    练习:写一个脚本
    给定一个文件:
    如果是一个普通文件,就显示之;
    如果是一个目录,亦显示之;
    否则,此为无法识别之文件;

    #!/bin/bash
    #
    FILE=/etc/rc.d/rc.sysinit
    
    if [ ! -e $FILE ]; then //中括号中的!,对测试结果取反。
    echo "No such file."
    exit 6 //退出码为6
    fi
    
    if [ -f $FILE ]; then
    echo "Common file."
    elif [ -d $FILE ]; then
    echo "Directory."
    else
    echo "Unknown."
    fi
    

    (2)
    定义脚本退出状态码

    exit: 退出脚本
    exit #
    如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码($?)即为脚本的退出状态码;


    测试脚本是否有语法错误:
    bash -n 脚本

    bash -x 脚本:单步执行


    (3)
    bash变量的类型:
    本地变量(局部变量)
    环境变量: 作用域为当前进程及其子进程。
    位置变量: $1, $2, ...
    shift //轮换,shift 1 自动切换到下一个参数。
    shift 2 自动切换到下下一个参数。以此类推。

    例:test.sh 1 2 3
    #!/bin/bash
    #
    echo $1 //输出a
    shift
    echo $1 //输出b
    shift
    echo $1 //输出c
    

    特殊变量:

    $? //最后一条命令的状态码
    $#:参数的个数
    $*: 参数列表
    $@:参数列表
    例
    ./filetest.sh /etc/fstab /etc/inittab
    $1: /etc/fstab
    $2: /etc/inittab
    

      

    练习:写一脚本
    能接受一个参数(文件路径)
    判定:此参数如果是一个存在的文件,就显示“OK.”;否则就显示"No such file."

    练习:写一个脚本
    给脚本传递两个参数(整数);
    显示此两者之和,之乘积;

    #!/bin/bash
    #
    if [ $# -lt 2 ]; then //要求用户必须输入参数。
    echo "Usage: cacl.sh ARG1 ARG2"
    exit 8
    fi
    
    echo "The sum is: $[$1+$2]."
    echo "The prod is: $[$1*$2]."
    

      

    练习:写一个脚本,完成以下任务
    1、使用一个变量保存一个用户名;
    2、删除此变量中的用户,且一并删除其家目录;
    3、显示“用户删除完成”类的信息;

    •组合测试条件
    -a: 与关系
    -o: 或关系
    !: 非关系

    if [ $# -gt 1 -a $# -le 3 ]
    if [ $# -gt 1 ] && [ $# -le 3 ]
    

     

    ------山的那一边
  • 相关阅读:
    数据结构学习
    古兰查询 之查询页面隐藏
    Qt只QSetting
    学习下知然网友写的taskqueue
    producter-consumer 他山之石
    unix缓冲
    Buffering of C streams
    POCO Log库
    linux下open和fopen的区别
    dup2替换
  • 原文地址:https://www.cnblogs.com/mountain2011/p/9338360.html
Copyright © 2020-2023  润新知