zoukankan      html  css  js  c++  java
  • shell基本运算符

    一、算术运算符

     使用expr或者$(()),+ - × / %

    a=10
    b=20
    
    val1=`expr $a + $b`  #变量之间要加空格  对于乘法*,需添加转义符""。
    val2=$((a + b))  #变量之间无需添加空格

    二、关系运算符

    只支持数字,不支持字符串,除非字符串的值为数字。

    -eq 相等

    -ne 不相等

    -gt 大于

    -lt 小于

    -ge 大于等于

    -le 小于等于

    a=10
    b=20
    
    if [ $a -eq $b ]  #[]与变量之间都要有空格
    then
        echo "a equal b"
    else
        echo "a not equal b"
    fi

    三、布尔运算符

    ! 非

    -o 或

    -a 与

    a=10
    b=20
    
    if [ $a -lt 100 -a $b -gt 15 ]
    then
        echo "a小于100且b大于15为真"
    fi

    四、逻辑运算符

    && 与

    || 或

    a=10
    b=20
    
    if [[ $a -lt 100 && $b -gt 15 ]] #需要两个[],注意与上面的-a对比。
    then
        echo "a小于100且b大于15为真"
    fi

    五、字符串运算符

    = 字符串是否相等

    != 字符串是否相等

    -z 字符串长度是否为0

    -n 字符串长度是否为0

    str 字符串是否为空

    a="abc"
    b="efg"
    
    if [ $a = $b ]
    then
        echo "equal"
    else
        echo "not equal"
    fi
    
    if [ -z $a ]
    then
        echo "0"
    else
        echo "not 0"
    fi

    if [ -n $a ]
    then
        echo "not 0"
    else
        echo "0"
    fi

    if [ $a ]
    then
        echo "not null"
    else
        echo "null"
    fi

    六、文件测试运算符

    -b file 是否是块设备文件

    -c file 是否是字符设备文件

    -d file 是否是目录

    -f file 是否是普通文件(不是目录,也不是设备)

    -g file 是否设置了SGID位

    -k file 是否设置了粘着位

    -p file 是否是有名管道

    -u file 是否设置了SUID位

    -r file 文件是否可读

    -w file 文件是否可写

    -x file 文件是否可执行

    -s file 文件是否为空

    -e file 文件(包括目录)是否存在

    -L file 文件是否是符号链接文件

    -h file 文件是否是软链接文件

    file="test.txt"
    
    if [ -f $file ]
    then
        echo "file exist!"
    fi
  • 相关阅读:
    模板方法模式
    结构型模式
    组合模式
    享元模式
    [STL离散化]Skyscrapers的lower_bound系列
    [水]浙大校赛补题
    [数]来自亮亮OJ的五道数学题
    [数]被数学淹没不知所措
    [tour]2019HUST onsite签到
    [树组BIT]训练两题重新理解ver.
  • 原文地址:https://www.cnblogs.com/sssblog/p/10186633.html
Copyright © 2011-2022 走看看