美文网首页Linux
Shell编程系列(三)-- 运算符

Shell编程系列(三)-- 运算符

作者: XinAnzzZ | 来源:发表于2019-05-13 20:22 被阅读0次

    前言

    在上一篇文章Shell编程系列(二)-- Bash 变量中, 我们学习了Shell编程中的变量相关的知识。通过上一篇文章的讲解,我们不难发现,Shell编程中变量的缺点就是:(1)弱类型;(2)默认字符串类型。 这就导致了我们是没有办法直接对Shell变量进行加减乘除数值运算的,所以本文就讲解一下Shell中的运算符和运算方式。

    declare命令

    declare命令是用于声明变量类型的命令。前文我们提到,Shell编程中所有的变量默认字符串类型,所以无法进行数值运算,想要数值运算,第一步就是需要使用declare命令来进行变量类型的声明。 语法:declare [+/-] [选项] 变量名

    选项 作用
    - 给变量设定类型属性
    + 取消变量类型属性
    -a 将变量声明为数组类型
    -i 将变量声明为整数型
    -x 将变量声明为环境变量
    -r 将变量声明为只读变量
    -p 显示指定变量的类型

    数值运算方法

    1. 方法一:

    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="sh" cid="n34" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; margin-top: 0px; margin-bottom: 20px; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; padding: 10px 30px 10px 0px; border: 1px solid; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;"> a=1
    b=2
    declare -i c=a+b
    echo $c
    3</pre>

    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="sh" cid="n39" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; margin-top: 0px; margin-bottom: 20px; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; padding: 10px 30px 10px 0px; border: 1px solid; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;"> a=1
    b=2
    c=(expra + b) echoc
    3</pre>

    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="sh" cid="n44" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; margin-top: 0px; margin-bottom: 20px; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; padding: 10px 30px 10px 0px; border: 1px solid; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;"> a=1
    b=2
    c=((a+b)) echoc
    3</pre>

    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="sh" cid="n49" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; margin-top: 0px; margin-bottom: 20px; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; padding: 10px 30px 10px 0px; border: 1px solid; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;"> a=1
    b=2
    c=[a+b] echoc
    3</pre>

    关于Shell运算符的内容大概就是这些,感谢阅读本文。如果您在阅读的过程中有任何的意见或者建议,欢迎留言。

    优先级 运算符 说明
    13 -, + 负、正
    12 !, ~ 逻辑非,按位取反或补码
    11 *, /, % 乘、除、取模
    10 +, - 加,减
    9 <<, >> 按位左移,按位右移
    8 <=, >=, <, > 小于等于,大于等于,小于,大于
    7 ==, != 等于,不等于
    6 &
    5 ^ 异或
    4 ¦
    3 && 逻辑与
    2 ¦ 逻辑或
    1 =, +=, *=, /=, %=, &=, ^=, ¦ 赋值,运算且赋值

    运算符:

    1. 方法四

    第三、四种方法,加号两侧加不加空格都可以,所以比较推荐这两种方式

    1. 方法三

    注意,$a + $b加号两侧必须加空格,否则不会进行数值运算。

    1. 方法二

    这里声明变量a和变量b的时候并未指定数据类型,但是指定了变量c的数据类型为整形,那么Shell会自动认为ab也是整形,然后进行整数运算。

    相关文章

      网友评论

        本文标题:Shell编程系列(三)-- 运算符

        本文链接:https://www.haomeiwen.com/subject/bbxdaqtx.html