1、通过 declare 和 typeset 命令

  • declare 和 typeset 两者等价
  • declare 和 typeset 都是用来定义变量类型的
  • 下面以 declare 进行总结

2、declare 参数如下

  • -r   将变量设置为只读
  • -i   将变量设置为整数
  • -a  将变量设置为数组
  • -F  显示此脚本前定义过的所有函数及内容
  • -f   仅显示此脚本前定义过的函数名
  • -x  将变量声明为环境变量

3、举例:

例1: 声明为不可变形式, declare -r

  $ var=hello

  $ var=world

  $ echo $var

  打印出:world     // 说明 var是可变的

  $ declare -r var=hello

  $ var=world  

  打印结果:-bash: var: 只读变量

例2:声明为整型, declare -i

  $ num=10

  $ num2=$num+20

  $ echo $num2

  打印出:10+20

  $ expr $num + 20

  打印出:30

  

  $ num=10

  $ declare -i num3

  $ num3=$num+90

  $ echo $num3

  打印出:100

例3:显示出系统中定义的 函数名及函数体

  $ declare -F

例4: 显示出系统中定义的所有函数的函数名

  $ declare -f

例5:声明为数组, declare -a

  $ declare -a array       // 声明一个数组

  $ array=("jones" "mike" "kobe" "jordan")     // 赋值

  输出数组内容:

    $ echo ${array[@]}    //  输出全部内容,打印出:jones mike kobe jordan

     $ echo ${array[0]}     // 输出数组元素下标为0的值,打印出:jones

  获取数组长度:

    $ echo ${#array[@]}     // 输出数组长度,打印出:4

    $ echo ${#array[0]}     // 输出数组第0个元素的长度,打印出:5

  给数组某个下标赋值:

    $ array[0]=lisi

    $ echo ${array[@]}     // 输出:lisi mike kobe jordan

  给数组尾部添加一个元素:

    $ array[10]=zhangsan    // 下标必须大于数组长度 - 1,可以大很多

  删除元素:

    $ unset array[2]    // 删除数组的第三个元素

    $ unset array   // 清空整个数组

  分片访问:

    $ echo ${array[@]:1:3}     // 从下标为 1 的位置开始,向后取 3个元素,忽略中间的空元素,直到取够 3个元素。如果元素不足3个,则输出后面的所有元素即可。

  内容替换:

    $ array2=${array[@]/ke/KE}    // 将数组中所有 ke 替换为 KE。

    $ echo ${array2[@]}

  数组遍历:

    for v in ${array[@]}

    do

      echo $v

    done 

例6: 声明为环境变量  declare -x     

   $ declare -x num    // num 成为环境变量后,就可以在脚本中直接使用。   如果不是环境变量,则只能在这个终端里面使用。

4、取消声明的变量

  declare +r

  declare +i

  declare +a

  declare +x

总结:向数组array [0,1,2,3,4]末尾添加元素,如果数组长度为5,添加新元素 7的时候下标指向的是 7,那么数组为 [0,1,2,3,4, , ,7],这时候数组长度为6,此时 array[5] 和 array[6] 值为空,array[7] 的值为7。

shell编程:有类型的变量的更多相关文章

  1. 小鸟初学Shell编程(七)变量引用及作用范围

    变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...

  2. 小鸟初学Shell编程(六)变量赋值

    变量的意义 我们在使用Linux命令或脚本的时候,会有一些输出,那么这些输出的信息可以用变量临时存储,以备我们下一条命令或脚本使用. 变量的定义 变量的定义建议用一个有意义的英文单词来代表变量,不要使 ...

  3. shell编程基本语法和变量

    一.编写shell脚本基本格式 拿最简单的hello word举例 .#!/bin/bash echo 'hello world' .#!/bin/bash:告诉计算机,使用bash解释器来执行代码 ...

  4. Linux Shell编程(8)——变量详解

    不同与许多其他的编程语言,Bash不以"类型"来区分变量.本质上来说,Bash变量是字符串,但是根据环境的不同,Bash允许变量有整数计算和比较.其中的决定因素是变量的值是不是只含 ...

  5. Linux Shell编程(6)——变量替换

    变量的名字是它的值保存的地方.引用它的值称为变量替换.$让我们仔细地区别变量和变量的值.如果variable1是一个变量的名字,那么$variable1就是引用这个变量的值――即这个变量它包含的数据. ...

  6. Linux Shell编程(7)——变量赋值

    =赋值操作符(它的左右两边不能有空白符) 不要搞混了=和-eq,-eq是比赋值操作更高级的测试.注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符.例子:简单的变量赋值 #!/b ...

  7. Linux学习——shell编程之环境变量配置文件

    小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...

  8. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  9. Shell 编程基础之变量和环境变量

    一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...

  10. Linux Shell编程变量赋值和引用

    我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #!/bin/sh  ...  注意:最好使用“! ...

随机推荐

  1. RSTP生成树

    一.实验目的 二.实验拓扑图 三.实验编址 四.实验步骤 1.基本步骤 配置PC机IP 配置完成,开启所有设备,测试主机之间连通性 2.配置RSTP基本功能 在四台交换机上修改生成树模式:配置完成后, ...

  2. 转载:LESS基本用法

    转载出处:https://blog.csdn.net/qq_38209578/article/details/80566860 转载出处:https://blog.csdn.net/weixin_44 ...

  3. Python3调用hessian

    领导派了个任务,实现服务器日志文件调用hessian接口保存到数据库 研究了半天python调用hessian的办法 首先使用hessian for python的链接: http://hessian ...

  4. 好用的打包工具webpack

    <什么是webpack> webpack是一个模块打包器,任何静态资源(js.css.图片等)都可以视作模块,然后模块之间也可以相互依赖,通过webpack对模块进行处理后,可以打包成我们 ...

  5. .Net编译环境x86,x64,anycpu的区别

    一.定义 x86: 将程序集编译为由兼容 x86 的 32 位公共语言运行库运行. x64: 将程序集编译为由支持 AMD64 或 EM64T 指令集的计算机上的 64 位公共语言运行库运行. any ...

  6. WPFのStyle TargetType的不同写法

    一.隐式写法 <Style TargetType="TextBlock"> <Setter Property="/> </Style> ...

  7. 【转】CentOS 7.3 从下载到安装

    CentOS 7.3 从下载到安装  https://blog.csdn.net/sxy2475/article/details/75194142 [百度知道]图解CentOS 7.3安装步骤  ht ...

  8. Winsock编程原理——面向连接

    Winsock编程原理——面向连接 Windows Sockets使用套接字进行编程,套接字编程是面向客户端/服务器模型而设计的,因此系统中需要客户端和服务器两个不同类型的进程,根据连接类型的不同,对 ...

  9. Linux系统分辨率设置

    linux 设置分辨率 如果你需要在linux上设置显示屏的分辨率,分两种情况:分辨率模式存在与分辨率模式不存在,具体如下. 1,分辨率模式已存在 1)如何查询是否存在: 图形界面:在System S ...

  10. webshell yar

    webshell D盾 http://www.d99net.net/