美文网首页
二.善用判断式

二.善用判断式

作者: 银鳕鱼小王子 | 来源:发表于2019-02-23 21:42 被阅读0次

    最近在看《鸟哥的LINUX私房菜 基础学习篇》,目前看到了shell脚本这一章,打算在这里简单记录一下这一整章的学习过程和相关的知识点。

    参考资料:《鸟哥的LINUX私房菜 基础学习篇》第四版 第十二章
    实验环境: Ubuntu18.04

    1.利用test命令的测试功能

    test命令可以用来判断系统的文件是否存在以及文件的相关属性等,是一个很有用的命令。
    简单的示例:

    #判断目录是否存在
    (base) laifeng@laifeng-X6:~$ test -e /home && echo "exist" || echo "not exist" # -e为判断文件名是否存在
    exist
    (base) laifeng@laifeng-X6:~$ test -e /laifeng && echo "exist" || echo "not exist"
    not exist
    

    这里涉及到两个常见的命令符 &&||

    command 1 && command 2 #在command 1执行成功时($?=0),执行command 2;否则不执行command2
    command 1 || command 2 #与&&相反,在command 1执行成功时($?=0),不执行command 2;否则执行command2
    

    因为/home目录存在,所以test -e /home执行后$?=0,所以执行echo "exist";而/laifeng目录不存在(正确的用户目录为/home/laifeng),所以执行echo "not exist"

    常用的参数:
    #文件相关
    -e     该文件名是否存在
    -f      该文件名是否存在且为file
    -d  该文件名是否存在且为目录
    
    #权限
    -r  检测文件名是否存在且具有“可读”权限
    -w  检测文件名是否存在且具有“可写”权限
    -x  检测文件名是否存在且具有“可执行”权限
    
    #字符串数据
    test -z string  判断字符串是否为空,若为空返回true
    test -n string  判断字符串是否为空,若为空返回false
    test str1 = str2    判断str1是否等于str2,若相等,返回true
    test str1 != str2   判断str1是否等于str2,若相等,返回false
    
    #多重判断条件
    -a  两个条件同时成立,eg:test -r file a test -x file,同时成立返回true
    -o  任何一个条件成立,eg:test -r file o test -x file,同时成立返回true
    !   反向状态,如test!-x file,当file不具有x时,返回true
    

    test命令详细介绍参考:https://www.cnblogs.com/hukey/p/5484487.html

    2.利用判断符号 [ ]

    利用判断符号[ ]也能进行判断,它和test命令使用的是一样的参数。
    简单的示例:

    (base) laifeng@laifeng-X6:~$ [ -z "${HOME}" ]; echo $? #-z 同test命令
    1
    

    书写格式注意:

    • 在中括号内的每个组件都需要有空格来分隔
    • 在中括号内的变量,最好用双引号包起来
    • 在中括号内的常数,最好以双引号包起来
    • 以*代表一个空格,则正确的示例:[*"${HOME}"*==*"Vbird"*]

    3.shell脚本的默认变量

    如何为一个脚本传入参数呢?shell脚本定义了一些默认变量,利用这些变量可以在执行脚本时,传入附加的参数,类似于ls -l中 - l 这个参数的传入。
    默认变量的定义如下:

    path/scriptname opt1 opt2 opt3 opt4
             $0      $1   $2   $3   $4
    # $0 代表脚本文件名
    # $1-4 分别为第一至四个参数
    # $# 代表参数个数
    # $@ 代表「"$1""$2""$3""$4"」
    # $* 代表「"$1 $2 $3 $4"」
    

    简单的示例:

    #文件名:how_parse.sh
    
    #!/bin/bash
    # Program:
    #       Program shows the script name, parameters...
    # History:
    # 2019/2/22     LaiFeng
    echo "the script name is ==> ${0}"
    echo "total parameter num is $#"
    [ "$#" -lt 2 ] && echo "The num of parameter is less than 2. Stop here" && exit 0
    echo "Your whole parameter is ==> '$@'"
    echo "1st parameter ==> ${1}"
    echo "2nd parameter ==> ${2}"                        
    
    #运行
    (base) laifeng@laifeng-X6:~/bin$ bash how_parse.sh one two three four
    the script name is ==> how_parse.sh
    total parameter num is 4
    Your whole parameter is ==> 'one two three four'
    1st parameter ==> one
    2nd parameter ==> two
    

    以上就是第二小节的内容,主要讲解了两种判断的方法:test命令和判断符[ ],以及如何在执行脚本时传入参数。

    相关文章

      网友评论

          本文标题:二.善用判断式

          本文链接:https://www.haomeiwen.com/subject/vcfmyqtx.html