zoukankan      html  css  js  c++  java
  • (五)条件测试

    条件测试语法

    格式1:test 条件表达式
    格式2:[ 条件表达式 ]
    格式3:[[ 条件表达式 ]]
    

    (1)文件 :判断文件或目录是否存在;返回命令执行结果$?

    • 文件判断符号
    	-e:可以同时对文件或目录是否存在进行判断
    	-f :判断文件是否存在
    	-d 判断目录是否存在
    	-r :判断当前用户对该文件是否有读权限
    
    test -d /home
    ! test -d /home
    test -f /etc/hosts
    ! test -f /etc/hosts  
    [ -d /home ]
    [ ! -d /test ] && mkdir /test
    [ -d /test ] || mkdir /test  
    

    (2)数字比较:

    • 比较符号
    	-eq :等于
    	-ge :大于等于
    	-gt :大于
    	-le	:小于等于
    	-lt	:小于
    	-ne :不等于
    
    [ $UID -eq 0 ]
    [ $UID -ne 0 ]
    [ 1 -gt 10 ]
    
    • 数字比较案例
    #!/bin/bash
    disk=$(df -h | grep "/$" | awk '{print $(NF-1) }' | awk -F '[%]' '{print $1}')
    if [ $disk -ge 5 ];then
            echo "disk is warning!!!"
    fi
    

    (3)字符串比较

    • 字符串比较符号
    提示:字符串进行比较两边变量都使用双引号
    	-z :如果变量长度为0,返回0值
    	-n:如果变量长度为0,返回非0值
    
    [ "$USER" = "root" ] ;echo $?
    [ "$USER" == "root" ] ;echo $?
    [root@localhost scripts]# var=""
    [root@localhost scripts]# echo ${#var}
    0
    [root@localhost scripts]# [ -z "$var" ];echo $?
    0
    [root@localhost scripts]# [ -n "$var" ];echo $?
    1
    

    (4)连接符:

    • 连接符号
    	-a:两边条件都成立,在表达式[]中使用
    	-o:两边条件任意为真就为真,在表达式[]中使用
    	&& :两边条件都成立,在表达式[[]]中使用
    	||:两边条件任意为真就为真,在表达式[[]]中使用
    
    [ 1 -gt 2 -a 2 -le 3 ];echo $?
    1
    [ 1 -gt 2 -o 2 -le 3 ];echo $?
    0
    [[ 1 -gt 2 && 2 -le 3 ]];echo $?
    1
    [[ 1 -gt 2 || 2 -le 3 ]];echo $?
    0
    

    (5)条件比较例子

    #!/bin/bash
    #################################################
    #useradd                                        #
    #v1.0 by love-linux     at 00/00/0000
    ################################################
    read -p "please input number:" num
    if [[ ! "$num" =~ ^[0-9]+$  ]];then
            echo "error number"
            exit
    fi
    read -p "please input prefix:" prefix
    if [ -z $prefix ];then
            echo "error prefix"
            exit
    fi
    for i in $(seq 1 $num)
    do
            user=$prefix$i
            useradd $user &>/dev/null
            if [ $? -eq 0 ];then
                    echo "user $user is success created"
            else
                    echo "user $user already exist"
                    continue
            fi
            echo "123" | passwd --stdin $user  &>/dev/null
    done
    
    #!/bin/bash
    #################################################
    #useradd                                        #
    #v1.0 by love-linux     at 00/00/0000
    ################################################
    read -p "please input number:" num
    while true
    do
            if [[ ! "$num" =~ ^[0-9]+$  ]];then    #判断用户输入的是否是数字,[[]] 支持正则,=~ ^[0-9]+$可以判断用户输入的是否是数字
                    echo "error number"
                    read -p "please input number:" num
    
            else
                    break
            fi
    done
    read -p "please input prefix:" prefix
    while true
    do
            if [ -z $prefix ];then                                    #判断用户输入的字符串是否为空,为空继续输入,不为空退出循环
                    echo "error prefix"
                    read -p "please input prefix:" prefix
            else
                    break
            fi
    done
    for i in $(seq 1 $num)
    do
            user=$prefix$i
            useradd $user &>/dev/null
            if [ $? -eq 0 ];then
                    echo "user $user is success created"
            else
                    echo "user $user already exist"
                    continue
            fi
            echo "123" | passwd --stdin $user  &>/dev/null
    done
    
  • 相关阅读:
    适用于Java和JavaScript的Codota AI自动完成
    Postgresql常用函数整理
    vue引入echarts地图的三种方式
    Linux下 tar 命令介绍
    如何并发执行Linux命令
    如何复用外部shell脚本
    shell 脚本中日期运算
    有问题找男人帮忙- Linux下man命令
    MySQL 排序规则简介
    再也不用担心 SSH 断开了
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/8884363.html
Copyright © 2011-2022 走看看