• shell-字符串多操作符综合实践多案例


    1. 字符串测试举例
         提示:下面的$file并未定义,而$file1 在上面测试中已定义。
      范例1:单条件字符串测试:

    [root@test-1 ~]# file1=/etc/services;file2=/etc/rc.local
    [root@test-1 ~]# echo $file1 $file2
    /etc/services /etc/rc.local
    [root@test-1 ~]# [ -n "$file" ] && echo 1 ||echo 0
    0
    #若串长度不为0则真。因$file未定义长度为0,所以为假(0)
    [root@test-1 ~]# [ -z "$file" ] && echo 1 ||echo 0
    1
    #若串长度为0则真。因$file未定义长度为0,所以为真(1)
    [root@test-1 ~]# [ -n "$file1" ] && echo 1 ||echo 0
    1
    #若串长度不为0则真。因$file已定义变量长度不为0,所以为真(1)
    [root@test-1 ~]# [ -z "$file1" ] && echo 1 ||echo 0
    0
    #若串长度为0则真。因$file已定义变量长度不为0,所以为假(0)
    
    提示:去掉双引号看看
    [root@test-1 ~]# [ -n $file ] && echo 1 ||echo 0
    1
    [root@test-1 ~]# [ -z $file1 ] && echo 1 ||echo 0
    0
    提示:字符串比较一定要加双引号
    

     范例2(生产):系统脚本/etc/init.d/nfs字符串测试的应用:

    # Remote quota server
    [ -z "$RQUOTAD" ] && RQUOTAD=`type -path rpc.rquotad`
    [ -z "$MOUNTD_NFS_V2" ] && MOUNTD_NFS_V2=default
    [ -z "$MOUNTD_NFS_V3" ] && MOUNTD_NFS_V3=default
    
    # Number of servers to be started by default
    [ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8
    [ -n "$NLM_GRACE_PERIOD" ] && {
    	/sbin/sysctl -w fs.nfs.nlm_grace_period=$NLM_GRACE_PERIOD >/dev/null 2>&1
    }
    

     范例3:多条件字符串测试:

    [root@test-1 ~]# file1=/etc/services;file2=/etc/rc.local
    [root@test-1 ~]# echo $file1 $file2
    /etc/services /etc/rc.local
    [root@test-1 ~]# [ -n "$file" ] && echo 1 ||echo 0
    0
    #若串长度不为0则真。因$file未定义长度为0,所以为假(0)
    [root@test-1 ~]# [ -z "$file" ] && echo 1 ||echo 0
    1
    #若串长度为0则真。因$file未定义长度为0,所以为真(1)
    [root@test-1 ~]# [ -z "$file1" ] && echo 1 ||echo 0
    0
    [root@test-1 ~]# [ -z "$file1" -a -z "file2" ] && echo 1 ||echo 0
    0
    [root@test-1 ~]# [[ -z "$file1" && -z "file2" ]] && echo 1 ||echo 0
    0
    [root@test-1 ~]# [[ -z "$file1" || -n "file2" ]] && echo 1 ||echo 0
    1
    [root@test-1 ~]# [ -z "$file1" -o -z "file2" ] && echo 1 ||echo 0
    0
    [root@test-1 ~]# [ -n "$file1" -o -z "file2" ] && echo 1 ||echo 0
    1
    [root@test-1 ~]# [ "$file1" == "file2" ] && echo 1 ||echo 0
    0
    [root@test-1 ~]# [ "$file1" = "file2" ] && echo 1 ||echo 0
    0
    [root@test-1 ~]# [ "$file1" !== "file2" ] && echo 1 ||echo 0
    -bash: [: !==: binary operator expected
    0
    [root@test-1 ~]# [ "$file1" != "file2" ] && echo 1 ||echo 0
    1
    [root@test-1 ~]# [ ! "$file1" == "file2" ] && echo 1 ||echo 0
    1
    [root@test-1 ~]# [ ! "$file1" > "file2" ] && echo 1 ||echo 0
    1
    [root@test-1 ~]# [ ! "$file1" < "file2" ] && echo 1 ||echo 0
    0
    [root@test-1 ~]# [ ! "${#file1}" < "${#file2}" ] && echo 1 ||echo 0
    1
    

      

  • 相关阅读:
    docker运行springboot应用
    docer运行node
    Git添加仓库
    安装docker-compose
    centos安装docker
    Centos设置软件源
    ubuntu安装docker
    ubuntu安装阿里云镜像地址
    docker加速器配置
    配置Spring发送邮件
  • 原文地址:https://www.cnblogs.com/scajy/p/12851906.html
Copyright © 2020-2023  润新知