• Shell(2)数值运算与判断


    一. Shell传参方式

    第一种传参方式:直接传参

    $1 脚本的第一个参数 $2 脚本的第二个参数

    [root@shell day2]# cat env.sh 
    #!/bin/sh
    echo $1 $2
    [root@shell day2]# sh env.sh ahui 18
    ahui 18
    
    [root@shell day2]# cat env.sh
    #!/bin/sh
    echo name: $1 
    echo age: $2
    [root@shell day2]# sh env.sh ahui 123
    name: ahui
    age: 123
    [root@shell day2]# cat env.sh
    #!/bin/sh
    echo name=$1 
    echo age=$2
    [root@shell day2]# sh env.sh ahui 123
    name=ahui
    age=123
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    第二种传参方式: 赋值传参

    [root@shell day2]# cat env.sh
    #!/bin/sh
    name=$1
    age=$2
    echo name=$name
    echo age=$age
    [root@shell day2]# sh env.sh ahui 123
    name=ahui
    age=123
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    案例:

    [root@shell day2]# cat env.sh 
    #!/bin/sh
    touc /tmp/test.txt
    result=$?
    name=$1
    age=$2
    echo name=$name
    echo age=$age
    [ $result -eq 0 ] && echo ok || echo error
    [root@shell day2]# sh env.sh ahui 123
    env.sh: line 2: touc: command not found
    name=ahui
    age=123
    error
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    第三种传参方式: read读入

    [root@shell day2]# cat env.sh 
    #!/bin/sh
    read -p "Please Input two env: " name age
    echo $name $age
    [root@shell day2]# sh env.sh
    Please Input two env: ahui 123
    ahui 123
    
    [root@shell day2]# cat env.sh
    #!/bin/sh
    read -p "Please Input name env: " name
    read -p "Please Input age env: " age
    echo name: $name 
    echo age: $age
    [root@shell day2]# 
    [root@shell day2]# sh env.sh
    Please Input name env: ahui
    Please Input age env: 123
    name: ahui
    age: 123
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    案例: 使用三种传参方式来修改IP地址和主机名称

    1)修改IP地址
    2)修改主机名称

    [root@test day2]# cat name.sh 
    #!/bin/sh
    #修改主机名称
    name=$1
    hostnamectl set-hostname $name
    #修改IP地址
    ip_dir=/etc/sysconfig/network-scripts/ifcfg-eth0
    #1.获取当前的IP地址
    ipadd=`grep ^IP $ip_dir|awk -F. '{print $NF}'`
    #2.将获取的当前的IP地址替换成新的IP
    read -p "请输入新的ip的最后一位: " ip 
    sed -i "s#$ipadd#$ip#g" $ip_dir
    grep 'IPADDR' $ip_dir
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    二. 数值运算

    加减乘除幂取余

    expr 不支持小数运算

    [root@test day2]# expr 1+1
    1+1
    [root@test day2]# expr ahui
    ahui
    [root@test day2]# expr 1 + 1
    2
    [root@test day2]# expr 10 - 1
    9
    [root@test day2]# expr 10 * 1
    expr: syntax error
    [root@test day2]# expr 10 \* 1
    10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    案例: 通过expr判断用户输入的是否为整数

    [root@test day2]# expr 1 + 1 &>/dev/null
    [root@test day2]# echo $?
    0
    [root@test day2]# expr 1 + 1.5 &>/dev/null
    [root@test day2]# echo $?
    2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    案例: ahui 不能过99

    [root@test day2]# cat env.sh 
    #!/bin/sh
    read -p "Please Input name env: " name
    read -p "Please Input age env: " age
    expr 1 + $age &>/dev/null
    [ $? -ne 0 ] && echo 请输入正确的年龄 && exit
    
    [ ${#age} -gt 2 ] && echo 请输入小于100的年龄 && exit
    [ `echo $age|wc -L` -gt 2 ] && echo 请输入小于100的年龄 && exit
    [ $age -gt 99 ] && echo 请输入小于100的年龄 && exit
    
    echo name: $name 
    echo age: $age
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    执行结果

    [root@test day2]# sh env.sh
    Please Input name env: ahui
    Please Input age env: 1
    name: ahui
    age: 1
    [root@test day2]# sh env.sh
    Please Input name env: ahui
    Please Input age env: 99
    name: ahui
    age: 99
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    $[]

    ==不支持小数运算 ==

    [root@test day2]# echo $[1+1]
    2
    [root@test day2]# echo $[1*1]
    1
    [root@test day2]# echo $[1*10]
    10
    [root@test day2]# echo $[1-10]
    -9
    [root@test day2]# echo $[10-10]
    0
    [root@test day2]# echo $[10**10]
    10000000000
    [root@test day2]# echo $[10%10]
    0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    $(())

    不支持小数 运算效率最高

    [root@test day2]# echo $((10*10))
    100
    [root@test day2]# echo $((10**10))
    10000000000
    [root@test day2]# echo $((10/10))
    1
    [root@test day2]# echo $((10/10*10))
    10
    [root@test day2]# echo $((10/10*10-2))
    8
    [root@test day2]# echo $((10/10*10-2**4))
    -6
    [root@test day2]# echo $((10/10*(10-2)**4))
    4096
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    let运算 & i++

    不支持小数
    以变量的方式做运算

    [root@test day2]# let 1+1
    [root@test day2]# let 1 + 1
    -bash: let: +: syntax error: operand expected (error token is "+")
    [root@test day2]# let a=10+10
    [root@test day2]# echo $a
    20
    [root@test day2]# let a=10*10
    [root@test day2]# echo $a
    100
    [root@test day2]# let a=10/10
    [root@test day2]# echo $a
    1
    
    [root@test day2]# let i++
    [root@test day2]# echo $i
    1
    [root@test day2]# #i++ ======== i=i+1
    [root@test day2]# let i++
    [root@test day2]# let i++
    [root@test day2]# let i++
    [root@test day2]# echo $i
    4
    
    
    [root@test day2]# unset i		# 取消变量
    [root@test day2]# let ++i
    [root@test day2]# let ++i
    [root@test day2]# let ++i
    [root@test day2]# echo $i
    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    i++和++i的区别

    直接做运算结果相同
    有变量赋值情况下结果不同
    i++ 先赋值在运算
    ++i 先运算在赋值

    [root@test ~]# a=1
    [root@test ~]# b=1
    [root@test ~]# let c=a++
    [root@test ~]# let d=++b
    [root@test ~]# #let c=a++  c=a+1
    [root@test ~]# #let d=++b  d=1+b
    [root@test ~]# echo $c
    1
    [root@test ~]# echo $d
    2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    bc 支持小数和整数运算

    [root@test ~]# yum -y install bc
    [root@test ~]# echo 1+1|bc
    2
    [root@test ~]# echo 10+1.5|bc
    11.5
    [root@test ~]# echo 10*1.5|bc
    15.0
    
    [root@test ~]# echo 10/3|bc
    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    awk python

    [root@test ~]# awk 'BEGIN{print 10/3}'
    3.33333
    [root@test ~]# awk 'BEGIN{print 10**3}'
    1000
    [root@test ~]# awk 'BEGIN{print 10**3.2}'
    1584.89
    [root@test ~]# awk 'BEGIN{print 10-3.2}'
    6.8
    [root@test ~]# awk 'BEGIN{print 10-3.2*100/3}'
    -96.6667
    
    [root@test ~]# echo 100 200|awk '{print $1*$2}'
    20000
    [root@test ~]# echo 100 200|awk '{print $1/$2}'
    0.5
    [root@test ~]# echo 100 200|awk '{print $1**$2}'
    inf
    [root@test ~]# echo 100 2|awk '{print $1**$2}'
    10000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    案例: 写一个脚本传参的方式做一个计算器 加减乘除

    [root@test ~]# cat count.sh
    echo "请输入算式"
    read -p ":" a
    
    echo $a | grep "[+,*,/,-]{1}"
    [ $? -ne 0 ] && echo "请输入正确的运算符号+、-、*、/" && exit
    
    echo $a | sed "s#[+,*,/, ,=,-]##g" | xargs -i expr 1 + {}
    [ $? -ne 0 ] && echo "请输入两个整数" && exit
    
    [[ $a =~ = ]] &&  echo "$a `echo $a |bc`"||echo "$a = `echo $a |bc`"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    三. 比较表达式:整数比较

    语法结构:
    	    判断比较两个数字大小
    		test  20  比较符 10
    	    [ 整数1 比较符 整数2 ]
    		[ `命令` 比较符 整数 ]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    比较符

    =    -eq  等于
    >    -gt  大于
    >=   -ge  大于等于
    <    -lt  小于
    <=   -le  小于等于
    !=   -ne  不等于
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    比较判断: 使用test

    [root@test ~]# test 20 -gt 10
    [root@test ~]# echo $?
    0
    [root@test ~]# test 20 -gt 100
    [root@test ~]# echo $?
    1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    案例

    [root@test ~]# test 20 -gt 10 && echo 成立 || echo 不成立
    成立
    [root@test ~]# test 10 -gt 10 && echo 成立 || echo 不成立
    不成立
    [root@test ~]# test 10 -eq 10 && echo 成立 || echo 不成立
    成立
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    比较判断: 使用[]

    == 整数两端必须有空格==

    [root@test ~]# [ 100 -gt 20 ]
    [root@test ~]# [ 100 -gt 20]
    -bash: [: missing `]'
    [root@test ~]# [100 -gt 20 ]
    -bash: [100: command not found
    [root@test ~]# [ 100 -gt 20 ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ 100 -gt 100 ] && echo 成立 || echo 不成立
    不成立
    [root@test ~]# [ 100 -ge 100 ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ 1000 -ge 100 ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ 1000 -ne 100 ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ 1000 -le 100 ] && echo 成立 || echo 不成立
    不成立
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    判断支持命令

    [root@test ~]# grep bash /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    [root@test ~]# grep bash /etc/passwd|wc -l
    1
    [root@test ~]# [ `grep bash /etc/passwd|wc -l` -eq 1  ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ `grep bash /etc/passwd|wc -l` -ne 0  ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ `grep bash /etc/passwd|wc -l` -gt 0  ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ `grep bash /etc/passwd|wc -l` -gt 1  ] && echo 成立 || echo 不成立
    不成立
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    案例: 使用read传参 输入两个整数 是否为整数做判断 然后比对两个数字的大小

    [root@test ~]# cat ><.sh
    #!/bin/sh
    echo "请输入两个数开始比较大小啦"
    read -p ":" a b
    [ `awk "BEGIN{print $a*100000}"` -eq `awk "BEGIN{print $b*100000}"` ] && echo "$a = $b"
    [ `awk "BEGIN{print $a*100000}"` -gt `awk "BEGIN{print $b*100000}"` ] && echo "$a > $b"
    [ `awk "BEGIN{print $a*100000}"` -lt `awk "BEGIN{print $b*100000}"` ] && echo "$a < $b"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    多整数比较

    并且: -a and
    或者: -o or

    语法结构:
    	    [ 整数1 比较符 整数2  并且  整数3 比较符 整数4 ]
    		[ 整数1 比较符 整数2  或者  整数3 比较符 整数4 ]
    
    • 1
    • 2
    • 3
    [root@test ~]# [ 100 -gt 20 -a 20 -eq 30 ] && echo 成立 || echo 不成立
    不成立
    [root@test ~]# [ 100 -gt 20 -a 20 -le 30 ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ 100 -gt 20 -o 20 -eq 30 ] && echo 成立 || echo 不成立
    成立
    [root@test ~]# [ 100 -lt 20 -o 20 -eq 30 ] && echo 成立 || echo 不成立
    不成立
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    案例:

    [root@test day2]# cat env.sh 
    #!/bin/sh
    read -p "Please Input name env: " name
    read -p "Please Input age env: " age
    expr 1 + $age &>/dev/null
    [ $? -ne 0 ] && echo 请输入正确的年龄 && exit
    
    if [ $age -gt 0 -a $age -lt 100 ];then
       echo name: $name 
       echo age: $age
    else
       echo "不成立"
       exit
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    四.条件表达式: 文件判断

    语法格式:
    	    test  -f  /etc/hosts
            [ 判断符 文件/目录/路径 ]
    		[ -f /etc/hosts ]
    
    • 1
    • 2
    • 3
    • 4

    判断符号:

    -f   文件存在则为真(文件为常规普通文件)
    -d  目录存在则为真
    -e  任意文件存在则为真
    -r   文件可读为真
    -w  文件可写为真
    -x  文件可执行为真
    !    取反

    [root@test day2]# [ -f /etc/hosts ] && echo 文件存在 || echo 文件不存在
    文件存在
    [root@test day2]# [ -e /etc/hosts ] && echo 文件存在 || echo 文件不存在
    文件存在
    [root@test day2]# [ -f /etc/ ] && echo 文件存在 || echo 文件不存在
    文件不存在
    [root@test day2]# [ -d /etc/ ] && echo 文件存在 || echo 文件不存在
    文件存在
    [root@test day2]# [ -e /etc/ ] && echo 文件存在 || echo 文件不存在
    文件存在
    [root@test day2]# [ -r /etc/ ] && echo 文件存在 || echo 文件不存在
    文件存在
    [root@test day2]# [ -r /etc/hosts ] && echo 文件存在 || echo 文件不存在
    文件存在
    [root@test day2]# [ -x /etc/hosts ] && echo 文件存在 || echo 文件不存在
    文件不存在
    
    [root@test day2]# [ -f /etc/hosts -a -d /etc ] && echo ok || echo error
    ok
    [root@test day2]# [ -d /etc/hosts -a -d /etc ] && echo ok || echo error
    error
    [root@test day2]# [ -d /etc/hosts -o -d /etc ] && echo ok || echo error
    ok
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    案例: 判断文件存在则执行

    判断bashrc存在则执行

    if [ -f /etc/bashrc ]; then
    . /etc/bashrc
    fi
    
    • 1
    • 2
    • 3

    调用函数库

    [root@test ~]# cat test.sh
    hehe(){
    	  echo test
    }
    hehe
    [root@test ~]# sh test.sh
    test
    [root@test ~]# hehe
    -bash: hehe: command not found
    [root@test ~]# hehe
    -bash: hehe: command not found
    [root@test ~]# source test.sh 
    test
    [root@test ~]# hehe
    test
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    [root@test day2]# cat test.sh
    #!/bin/bash
    [ -f /etc/init.d/functions ] && . /etc/init.d/functions
    if [ -f $1 ];then
      action "$1" /bin/true
    else
      action "$1" /bin/false
    fi
    [root@test day2]# sh test.sh /etc/hosts
    /etc/hosts                                                 [  OK  ]
    [root@test day2]# sh test.sh /etc/hostssssss
    /etc/hostssssss                                            [FAILED]
    [root@test day2]# sh test.sh /etc/
    /etc/                                                      [FAILED]
    [root@test day2]# sh test.sh /etc/passwd
    /etc/passwd                                                [  OK  ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    案例2: 判断目录是否存在 如果不存在则创建

    [root@test day2]# [ -d hehe ] || mkdir hehe
    [root@test day2]# ll
    drwxr-xr-x 2 root root   6 Aug  2 11:20 hehe
    
    • 1
    • 2
    • 3

    五.条件表达式:字符串比对

    -n 字符串不为0则为真
    -z 字符串为0则为真

    [root@test day2]# test=aaa
    [root@test day2]# echo $test
    aaa
    [root@test day2]# [ -n $test ] && echo 成立
    成立
    [root@test day2]# test=""
    [root@test day2]# [ -z $test ] && echo 成立
    成立
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    语法格式:
    	    [ 字符串1  = 字符串2 ]
    		[ 字符串1 != 字符串2 ]
    
    • 1
    • 2
    • 3
    [root@test day2]# [ root = root ] && echo 成立|| echo 不成立
    成立
    [root@test day2]# [ root = roo ] && echo 成立|| echo 不成立
    不成立
    [root@test day2]# [ root != roo ] && echo 成立|| echo 不成立
    成立
    [root@test day2]# [ $name != roo ] && echo 成立|| echo 不成立
    成立
    [root@test day2]# [ $name = roo ] && echo 成立|| echo 不成立
    不成立
    [root@test day2]# echo $name
    hehe
    [root@test day2]# [ $name = hehe ] && echo 成立|| echo 不成立
    成立
    
    [root@test day2]# [ $name = roo -o $name = hehe ] && echo 成立|| echo 不成立
    成立
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    案例: 用户输入的字符串为0则退出

    [root@test day2]# cat env.sh 
    #!/bin/sh
    read -p "Please Input name env: " name
    [ -z $name ] && echo "必须输入名称" && exit
    
    • 1
    • 2
    • 3
    • 4

    正则匹配:

    [root@test day2]# [[ root =~ ^ro ]] && echo 成立|| echo 不成立
    成立
    [root@test day2]# 
    [root@test day2]# [[ root =~ t$ ]] && echo 成立|| echo 不成立
    成立
    [root@test day2]# [[ root =~ [a-z]$ ]] && echo 成立|| echo 不成立
    成立
    [root@test day2]# [[ root =~ [0-9]$ ]] && echo 成立|| echo 不成立
    不成立
    [root@test day2]# [[ root1 =~ [0-9]$ ]] && echo 成立|| echo 不成立
    成立
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    只允许字母

    [root@test day2]# [[ ahu100 =~ [a-z] ]] && echo 成立 || echo 不成立
    成立
    [root@test day2]# [[ ahu100 =~ [a-z]$ ]] && echo 成立 || echo 不成立
    不成立
    [root@test day2]# [[ ahu100 =~ ^[a-z]$ ]] && echo 成立 || echo 不成立
    不成立
    [root@test day2]# [[ ahui =~ ^[a-z]$ ]] && echo 成立 || echo 不成立
    不成立
    [root@test day2]# [[ a =~ ^[a-z]$ ]] && echo 成立 || echo 不成立
    成立
    [root@test day2]# [[ a =~ ^[a-z]$ ]] && echo 成立 || echo 不成立
    成立
    [root@test day2]# [[ ahui =~ ^[a-z]+$ ]] && echo 成立 || echo 不成立
    成立
    [root@test day2]# [[ ah45hui =~ ^[a-z]+$ ]] && echo 成立 || echo 不成立
    不成立
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    案例: 要求传参的名称必须为字母 不允许有数字

    [root@test day2]# cat env.sh 
    #!/bin/sh
    read -p "Please Input name env: " name
    [ -z $name ] && echo "必须输入名称" && exit
    if [[  $name =~ ^[a-Z]+$ ]];then
       echo $name
    else
       echo "必须为字母"
       exit
    fi
    
    read -p "Please Input age env: " age
    if [[ $age =~ ^[0-9]{2}$ ]];then
      echo $age
    else
       echo "必须输入0-100之间的数字"
       exit
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    小结:

    1. 脚本传参方式
      直接传参 $1 $2
      赋值传参 name=$1
      read传参 read -p “提示” name

    2. 数值运算:
      整数: expr $[] $(()) let bc
      都支持: awk python

    3. 数值比较
      test
      [ 整数1 比较符 整数2 ]

      =    -eq  等于
      >    -gt  大于
      >=   -ge  大于等于
      <    -lt  小于
      <=   -le  小于等于
      !=   -ne  不等于
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      多整数比较 -a -o

    4. 文件判断
      [ 判断符 文件/目录 ]
      -f   文件存在则为真(文件为常规普通文件)
      -d  目录存在则为真
      -e  任意文件存在则为真
      -r   文件可读为真
      -w  文件可写为真
      -x  文件可执行为真
      !    取反
      案例 文件存在则执行
      /etc/init.d/functions

    5. 字符串比对
      -n 值不为0为真
      -z 值为0则为真

      [  root = root ]
      [ root != root ]
      
      • 1
      • 2
    6. 正则匹配

      [[ root =~ ^r ]]
      [[ root =~ ^[0-9] ]]
      [[ $name =~ ^[a-Z0-9]+$ ]]
      
      • 1
      • 2
      • 3

      判断是否为整数
      判断传参的个数
      判断传参参数的长度
      expr

      [[ $age = ^[0-9]+$ ]]
      
      • 1

      判断是否为空

      [ -z $name ]
      
      • 1
  • 相关阅读:
    CY3/5/7/FITC荧光素标记乳糖/蜜二糖/单乙酰氨基半乳糖
    ​力扣解法汇总754. 到达终点数字
    递归 python
    红黑树B树B+树区别及其适用场景
    植物大战僵尸各种僵尸攻略(四)
    【数据结构】这些二叉树经典面试题帮你快速入门二叉树
    uniapp 基础
    【玩转C语言】第一讲--->C语言概念
    自己动手从零写桌面操作系统GrapeOS系列教程——15.用汇编向屏幕输出字符
    引用 随笔
  • 原文地址:https://blog.csdn.net/AHui_CSDN/article/details/126122011