前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell编程 --- 一些简单的运算符

shell编程 --- 一些简单的运算符

作者头像
帅地
发布2018-08-30 11:59:55
4980
发布2018-08-30 11:59:55
举报
文章被收录于专栏:苦逼的码农苦逼的码农

每天进步一点点,从量变到质量。

今天讲讲shell编程中的运算符。学过例如c,java等语言的人可能都知道运算符是啥个东东,也知道如何使用各种运算符。不过,shell的运算符和其他大部分编程语言还是有那么一点点差别的。不信你往下看。

先说说讲的大体内容

  • 算术运算符
  • 关系运算符
  • 有关字符串的运算符

算术运算符

估计可能还有些人不清除啥是算术运算符、啥是关系运算符。说白了算术运算符就是最基本的那些运算符,即加减乘除、取余、赋值(=)等这些基本的、最常用的运算符。

对于shell中数与数之间的运算还是和其他语言有那么一点区别。例如要你算a=5+10。可能在别的语言中,你直接

代码语言:javascript
复制
a=5+10

就可以了。但是很抱歉,在shell中行不通。如果你这样写,在shell中a的值不是15,a的值就是”5+10”这个字符串。

所以我们需要借助其他命令来实现,如awkexpr这些命令。其中expr算是用的比较多,因此,我们也用expr这个命令来解决数值之间的运算。至于怎么用,简单粗暴,直接看程序:

代码语言:javascript
复制
    #!/bin/bash

    a=`expr 5 + 10` 
    echo "a=$a"

执行脚本的结果

代码语言:javascript
复制
    a=15

注意点

等号之间不能有空格 表达式expr以及加号+与数值之间要有空格 使用的是反引号`把他们圈起来,而不是单引号。

问题:为啥他们之间要有空格? 考考你。

下面我演示一下加减乘除。

代码语言:javascript
复制
    #!/bin/bash   

    a=20
    b=40       

    #加法
    c=`expr $a + $b`   
    echo "a+b=$c" 

    #减法   
    c=`expr $a - $b`  
    echo "a-b=$c"   

    #乘法,注意有个\  
    c=`expr $a \* $b`  
    echo "a*b=$c"  

    #除法    
    c=`expr $a / $b`
    echo "a/b=$c"

输出结果

代码语言:javascript
复制
    a+b=40   
    a-b=-20  
    a*b=800
    a/b=2

注意点

  • 乘号(*)前边需要加转义字符(\)才行哦。
  • 在MAC中shell的expr语法相当于:$((表达式)),此处表达式中的”*”不需要加转义字符\

关系运算符

关系运算符就是用来比较两个数之间的大小的。不过需要注意的是,我下面列举的关系运算符是不支持字符串的,除非字符串的值是数字

常用关系运算符如下:

  • -eq:判断是否相等,相等则返回true,否则返回false。下面类似
  • -nq:判断是否不相等。
  • -gt:判断左边的数是否大于右边的。
  • -lt:判断左边的数是否小于右边的。
  • -ge:判断左边的数是否大于等于右边
  • -le:判断左边的数是否小于等于右边。

直接看程序,相信你们看一下就知道如何使用了,这些都挺简单,没有什么好详细讲的。

代码语言:javascript
复制
    a=10
    b=20

    if [ $a -eq $b ]
        then
            echo "相等"
    else
        echo "不相等"
    fi    #记得加上fi代表结束

输出结果:

代码语言:javascript
复制
    不相等

我就演示一个,其他类似。

有关字符串的一些运算符

下面列举一些常用于字符串的运算符

  • =:判断两个字符串是否相等。相等则返回true,否则返回false。注意啊,这个和我们平时用的’==’不一样哦。
  • !=:判断两个字符串是否不相等。
  • -z:检测字符串的长度是否为0。
  • -n:检测字符串长度是否不为0。
  • str:检测字符串是否为空。

简单暴力,直接代码演示,相信聪明的你们一眼就知道怎么用了

代码语言:javascript
复制
    #!/bin/bash

    a="aa"
    b="bb"

    if [ $a = $b ]
        then
        echo "a与b相等"
    else
        echo "a与b不相等"
    fi


    if [ -z $a ]
        then
            echo "a字符串的长度为0"
    else
            echo "a字符串的长度不为0"
    fi

输出结果:

代码语言:javascript
复制
    a与b不相等
    a字符串的长度不为0

大家多动手试试勒


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅地玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算术运算符
  • 关系运算符
  • 有关字符串的一些运算符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档