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编程系列4--有类型变量:字符串、只读类型、整数、数组

    shell编程系列4--有类型变量:字符串.只读类型.整数.数组 有类型变量总结: declare命令和typeset命令两者等价 declare.typeset命令都是用来定义变量类型的 decla ...

  2. shell的历史

    shell的历史 shell概况 人想要和操作系统进行交互,传送指令给操作系统,就需要使用到shell.宏义的shell是人与机器交互的页面,它分为两种,一种是有界面的,比如GUI,另外一种是没有界面 ...

  3. Shell中的变量

    一.什么是变量 变量在 bash 环境中是非常重要的,简单的说,就是让某一个特定字符串来代表不固定的内容.举例: 那就是:『 y = ax + b 』这东西,在等号左边的(y)就是变量,在等号右边的( ...

  4. [转]Windows Shell 编程 第二章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987893】

    第二章Shell的结构  “Shell 编程”的大伞之下有大量的API函数和COM接口.这个种类繁多的‘命令’集允许你用不同的方法对Windows Shell进行编程.函数和接口并不是两种提供相同功能 ...

  5. shell编程其实真的很简单(二)

    上篇我们学会了如何使用及定义变量.按照尿性,一般接下来就该学基本数据类型的运算了. 没错,本篇就仍是这么俗套的来讲讲这无聊但又必学的基本数据类型的运算了. 基本数据类型运算 操作符 符号 语义 描述 ...

  6. Shell中的算术运算(译)

    算术运算 尽管Shell中的变量被缺省地看做是string类型,而非number,但是Shell本身仍然支持算术运算.主要有以下5种方式. 1. declare 2. expr $ z=5 $ z=` ...

  7. Linux shell的问题

    1.uptime命令可以查看当前系统的启动时间: w命令显示当前登录者top命令显示当前任务ps命令显示所有进程信息 uptime命令可以查看系统启动时间   2.使用shell时,默认的环境变量放在 ...

  8. 用Shell编写的俄罗斯方块代码

    用Shell编写的俄罗斯方块代码 不得不承认任何一门语言玩6了,啥都能搞出来啊,竟然用Shell编写出来了一个俄罗斯方块游戏的代码,很有意思,这个代码不是我写出来的,不过大家可以下载一下在window ...

  9. ipython是python的交互式shell工具

    ipython: 是python的交互式shell工具,比默认的python shell工具要好用.支持变了自动补全,自动缩进,内置了很多的功能和函数 启动:可以通过cmd来启动该工具 自动补全: I ...

随机推荐

  1. python中一个汉字点3个字节? utf-8

    今天发现了一个汉字占了3个字节,一开始以为是两个呢,字符串切片时总出现乱码,后来才发现一个中文占3个字节.这才解决了乱码问题 原来  1. utf-8 编码中,一个汉字占三个字节.英文字母是一个占用一 ...

  2. 【转】EDID的简介和解析

    转自:https://www.cnblogs.com/beyond-rxl/p/9266997.html 一.EDID简介 EDID: Extended Display Identification ...

  3. springboot killed springboot 无故停止运行解决办法

    测试环境的服务部署在阿里云服务器上,运行一段时间总是自动宕掉,在配置文件里加上内存溢出配置,也不能打印出相关日志,一直找不出原因.今天在网上:http://www.cnblogs.com/chener ...

  4. python之路——博客目录

    博客目录 python基础部分 函数 初识函数 函数进阶 装饰器函数 迭代器和生成器 内置函数和匿名函数 递归函数 常用模块 常用模块 模块和包 面向对象 初识面向对象 面向对象进阶 网络编程 网络编 ...

  5. Jupyter Notebook 修改默认打开的文件夹的位置

    初次使用Jupyter Notebook,确实好用啊!!,又好看又好用,不过还是遇到了一个问题,安装好之后,打开Jupyter Notebook 的时候,默认的文件夹的位置是C盘下面的XXX目录,但是 ...

  6. servlet两种配置方法详解

     1.web.xml中Servlet的注解 <servlet> <!-- servlet的内部名称,自定义 --> <servlet-name>DemoAction ...

  7. 在Debian9服务器上安装最新版Python

    通过Xshell 6 远程连接linux服务器 安装前的准备工作 更新服务器: 命令:apt update && apt upgrade -y 安装python3的依赖库: 命令:ap ...

  8. VMware下Debian开发环境部署之常见问题记录

    本文讲介绍windows作为宿主机,linux虚拟机作为编译环境的开发环境搭建中最常用到的三个问题,详细描述了解决过程. 目录: 1.网路配置: 2.分辨率设置: 3.共享网盘设置: 1.网络设置,V ...

  9. [LeetCode] 80. Remove Duplicates from Sorted Array II ☆☆☆(从有序数组中删除重复项之二)

    https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/discuss/27976/3-6-easy-lines-C% ...

  10. [CentOS] 环境变量设置的三种方法

    在CentOS系统中添加环境变量的方法有几种,推荐第三种方法.这里以添加 TexLive 2017 的环境变量为例进行说明. 1. 修改  ~/.bash_profile  文档,在文末添加以下代码: ...