zoukankan      html  css  js  c++  java
  • Linux的shell编程篇之变量与运算

    一、变量

    在多数语言中,变量一般都包括四个特性:作用、名称、类型、值。

      1、变量的命名规则:

        1.1、变量的名称可以是由字母、数字、下划线组成,但不可以以数字开头。

        1.2、在bash中,变量的默认类型是字符串型。如执行数字运算,则需要指定变量类型为数值型。

        1.3、与其他语言一样,变量与值之间使用“=”连接,但“=”左右不能存在空格。

        1.4、变量的值如果有空格,需要使用单引号或者双引号括起来。

        1.5、变量的值是可以叠加的。

        

         1.6、变量的名称使用大写,目的是与Linux的系统命令区分开来。

      2、变量的分类:

        用户自定义变量:最常见的变量,可以由用户自由定义变量的作用、名称、类型、值。

        环境变量分为两种:

            用户自定义环境变量:可以由用户自由定义变量的作用、名称、类型、值。

            系统环境变量:这种变量的作用、名称、类型都是系统固定好的,一旦修改便会出现问题。变量的值可以由用户自己修改但不可随意修改。

        位置参数变量:与预定义变量一致。

        预定义变量:就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用。变量的作用、名称、类型都是固定的,用户可以自定义值。

      3、用户自定义变量的增用改查删。

        

         

         

         

         

         

         注意:下面这个图中的QQ变量,第一个是本不存在的变量,第二个我赋予了空值(空值也是一个值)。但两者的输出结果一样,我们没法分辨。这时候就需要(set -u)命令来区分。

        

        下图中删除了QQ变量,然后使用了(set -u)命令,此时再次输出变量QQ,就显示报错。

         

       4、用户自定义环境变量。

        与用户自定义变量大致相同。不过需要执行export命令,可以将用户自定义变量变为用户自定义环境变量。

        

         两者的区别:用户自定义变量只能适用于当前的shell,不存在与其他子shell中。而用户自定义环境变量在整个系统中都是生效的。

        执行(pstree)命令(没有此命令可以安装 psmisc 依赖包),可以查看进程树。这里显示的当前bash(也成为父shell)。

        

        当执行(bash)命令后,便进入了子shell。

         

        

         输入exit,可以退回到上一级shell中。

      5、系统环境变量。

        最常用的PATH环境变量

         在执行命令的时候,我们输入的都是命令本身,并没有填写路径,但是却可以在任意目录执行。这里使用到的就是PATH环境变量。

        

         上面图可以看到,PATH变量定义的是一些路径,通过(:)来进行分开。所以,我们将写好的脚本放在一个固定目录中。再将目录的绝对路径保存在PATH变量中,调用脚本时,任意目录直接输入脚本名称就可以执行。

        

         上面添加的PATH环境变量也是临时的,一旦重启就会消失。要想永久生效,需要写入配置文件中。

      6、位置参数变量

        6.1、$n:其中,n为数字,0代表命令本身,1-9代表从第一至第九个参数,若参数十个以上时举例{10}。

        一个简单的加法计算器1

        

         

         上面的图总共输出了两行。而前面输入的79  21 就是执行命令后面添加的两个参数,分别赋值给了num1与num2进行加法计算,输出100;而第二行是echo $0 输出命令本身。

        6.2、$*、$@:代表执行命令时后面的参数。$*会把所有的参数看成为一个整体;而$@是把每个参数当作一个整体。

        

         

         两种不同的输出结果,第一种结果是变量a将输入的五个参数作为一个值输出;第二种结果是变量b将五个参数作为五个值输出。

        6.3、$#:统计变量的个数。

        

         

        6.4、接收键盘输入

        上面的输入都需要在命令后面加上参数,也可以设置成为带有提示信息的等待用户输入。

        read  选项  变量

        选项:-p “提示信息”:在等待键盘输入时给予的提示信息

           -t   数字:等待时间(单位秒)

           -n  数字:限制用户的输入长度

           -s:隐藏用户的输入(密文输入)

        简易加法计算器2

        

      7、预定义变量

        7.1、$?:最后一次命令的执行状态。在多数默认情况下,返回值为0,则代表上一条命令程序正常执行;若返回值非0,则代表上一条命令程序执行不准确。

        7.2、$$:当前进程的进程号(PID)。

        7.3、$!:后台运行的最后一个进程的进程号(PID)。

      8、变量的类型

        在shell中,变量的默认类型是字符串类型。如果想要改变变量的类型可以有以下几种方法。

        8.1、declare +/-  选项   变量

        其中 + :取消设定变量的类型

           - :设定变量的类型

           a :设定/取消变量为数组型

           i :设定/取消变量为整数型

          -x :将变量设定为环境变量

          -r :将变量设定为只读变量

          -p :查询变量的类型

        export可以将变量变为环境变量,实际上export命令就是调用的declare -x 这个命令;declare -r可以将变量变为只读变量,只读变量不能修改变量名、不能修改值、不能删除,但这种变量除了系统自带的,用户自动设定的都是临时生效,一旦系统重启,变量就会消失。所有的变量的与变量类型都可以使用declare -p 命令查询。

        8.2、调用expr命令进行数值运算

        

         要注意“+”的两边都有空格

        8.3、调用let命令进行数值的运算

        

        8.3、使用"$(())"、“$[]”格式进行数值的运算

        

        上面这些数值运算都是整数型数值运算,小数点后直接舍弃,不会四舍五入。

    二、运算

      1、运算符

      四则运算符:(+ - * /);有括号的先算括号内的;%取模(21%4,相当于21/4=5····1,所以21%4的结果为1)。

      2、变量的运算

        2.1、整数变量运算

        

         

         2.2、数组型变量运算

        通常情况下,一个变量内保存一个值。但是数组型的变量,一个变量内保存的多个值,而区分这些值靠的就是变量的下标。

        正常的标准写法是declare -a num[0]=123。但是由于num[0]这个写法就比较特别,所以将 declare -a 省略系统也是认识的。

        下标一般情况下从0开始。

        

      3、变量的测试与内容置换

        

  • 相关阅读:
    == 和 equals 的区别是什么?
    String 类的常用方法都有那些?
    报表工具对比选型系列—多样性数据源支持度
    报表工具选型对比系列
    报表工具选型对比系列
    web 端怎么实现套打发票、快递单等套打票据功能?
    如何集成一个第三方报表,权限怎么控制
    BI 报表工具如何与 springBoot 框架集成
    在报表中可以使用 ECharts 做图形展现吗?
    Tableau 等常见 BI 工具能集成到 java 项目中吗
  • 原文地址:https://www.cnblogs.com/641055499-mozai/p/13041425.html
Copyright © 2011-2022 走看看