shell数据类型

shell常用的数据类型有 字符串、整数型、数组

字符串

字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号

建议使用双引号,因为双引号里可以有变量和特殊字符,可以按照变量和特殊字符去使用

声明字符串类型的变量:
name="Alnk"

1 字符串拼接

2 获取字符串长度

3 字符串切片(顾首不顾尾)

4 替换字符串

一个 / 匹配第一个字符串,两个 // 匹配所有字符串

5 字符串删除

整数型

在Shell中所有的变量默认都是字符串型。
也就是说,如果不手工指定变量的类型,那么所有的数值都是不能进行运算的 如果想要进行数学运算,可以使用“$((运算式))”或“$[运算式]”方式运算

如果想进行小数运算可以借助bc计算器或者awk命令

数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小
用括号来表示数组,数组元素用空格符号分割开 数组元素的下标由0开始编号
获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0 声明数组类型的变量
1 直接声明
数组名=(值1 值2 ... 值n) 2 通过指定下标来声明
数组名[下标]=值 3 将命令输出作为数组元素
array=$((command)) 获取数组指定下标的值
${数组名[下标]} 使用“@”符号可以获取数组中的所有元素
${数组名[@]}
定义数组
数组名array,元素a b c
[root@localhost~]# array=(a b c) 获取所有元素
[root@localhost~]# echo ${array[*]}
a b c
[root@localhost~]# echo ${array[@]}
a b c 获取数组的长度
[root@localhost~]# echo ${#array[*]}
3 获取所有元素下标
[root@localhost~]# echo ${!array[@]}
0 1 2 通过下标0 1 2依次获取数组的每一个元素
[root@localhost~]# echo ${array[0]}
a
[root@localhost~]# echo ${array[1]}
b
[root@localhost~]# echo ${array[2]}
c 通过下标增加数组元素
[root@localhost~]# array=(a b c)
[root@localhost~]# array[3]="333"
[root@localhost~]# echo ${array[@]}
a b c 333
[root@localhost~]# echo ${array[3]}
333
[root@localhost~]# array[5]="555"
[root@localhost~]# echo ${array[@]}
a b c 333 555
[root@localhost~]# echo ${!array[@]}
0 1 2 3 5
[root@localhost~]# echo ${array[4]} # 此处下标4没有数据,不能单纯的从0 1 2 开始数数 [root@localhost~]# echo ${array[5]}
555 获取部分数组
[root@localhost~]# echo ${array[*]:0:2}
a b 删除第一个元素
[root@localhost~]# unset array[0] 删除整个数组
[root@localhost~]# unset array

数组的其他示例

用seq生成数字,添加到数组

遍历数组

while read line添加数组

判断一个元素是否在数组中

Shell-02-数据类型的更多相关文章

  1. java基础-02数据类型

    基本类型 整数 byte byte 数据类型是8位.有符号的,以二进制补码表示的整数 最小值是 -128(-2^7) 最大值是 127(2^7-1) 默认值是 0 byte 类型用在大型数组中节约空间 ...

  2. Linux Shell 02 流程控制语句

    一.if语句格式:支持if/elif/else形式,支持嵌套 1. command执行成功(及退出状态为0)时,执行command2 2. 当判断条件为test命令时,判断结果为true时,执行com ...

  3. Python学习笔记:02数据类型

    Python 数据类型 python中标准的数据类型有 基础类型 整型(长整型) 浮点型 复数型 布尔型 序列类型 字符串 列表 元组 字典 整型 整型和长整型并不严格区分,整型int的表达范围和计算 ...

  4. Python Revisited Day 02 (数据类型)

    目录 Python 关键字 整数 整数转换函数 整数位逻辑操作符 浮点类型 math模块函数与常量 复数 精确的十进制数字 decimal 字符串 str.format() 格式规约 Python 关 ...

  5. .Net转Java.02.数据类型

    .NET中常见的数据类型分类分别是值类型和引用类型 值类型包括(基元类型.struct.枚举) 引用类型包括(类.类.数组.接口.指针) Java分为,基本类型和类   C#   Java   值类型 ...

  6. C#语言-02.数据类型

    a. 数据类型 i. 值类型:是一种由类型的实际值表示的数据类型,存储在栈内的存储空间中,由于编译器编译后将源代码中的值类型变量直接对应到唯一的存储空间上,直接访问该存储空间,故值类型的数据具有较快地 ...

  7. python之02数据类型学习

    参考链接:http://www.cnblogs.com/yuanchenqi/articles/5782764.html python的数据类型有:Number.Boolean.String .Lis ...

  8. java 基础 02 数据类型、运算符、分支结构

    内容: (1)数据类型 (2)运算符 (3)分支结构 1.数据类型 java语言中的基本数据类型:byte.short.int.long.float.double.boolean.char. 1.1布 ...

  9. 「JavaSE 重新出发」02. 数据类型与运算符

    「TOC」 Java 程序基本要求 Java 数据类型 基本数据类型 复合数据类型 运算符 逻辑运算符 位运算符 运算符优先级 Java 程序基本要求 public class : 一个 Java 文 ...

  10. Python3程序设计指南:02 数据类型

    目录 1.标识符与关键字 1.1 规则 1.2 约定 2.Integral类型 2.1 整数 2.1.1 数值型操作符与函数 2.1.2 使用数据类型创建对象 2.1.3 整数位逻辑操作符 2.2 布 ...

随机推荐

  1. PO,VO,BO,POJO,DAO的区别

    基本概念 PO:persistant object (持久化对象),可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不 ...

  2. Postman团队协作开发

    介绍 Postman是一款强大的API开发调试软件,它跨平台(真正跨平台,支持linux/mac os/windows),同时还提供浏览器插件,可以说是一个良心软件, 今天主要说一下Postman团队 ...

  3. Spring WebFlux快速上手——响应式Spring的道法术器

    https://blog.csdn.net/get_set/article/details/79480233

  4. 如何查看wsdl文档

    http://www.360doc.com/content/16/1027/00/37651083_601648996.shtml

  5. leetcode156场周赛5206

    思路分析: 1.两个数组,一个保存字符,一个保存字符出现次数 2.遍历一遍字符串,出现相同的字符,次数加一,且次数到k的话,那么就剔除,没到k,就次数加一.如果不同,就把它加入到字符的数组里面,对应次 ...

  6. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  7. Vue使用PrintJs自定义打印表格模板

    这俩天客户提了个需求,需要打印俩个自定义的表格模板,一开始想到的是打印Json表格,但是发现表格样式不符合要求,后来想着打印html,自己生成html模板然后打印,基本可以满足客户的需求,废话不多说, ...

  8. Java | 字符串缓冲区(StringBuilder)

    为什么要出现字符缓冲区 我们都知道,String类是不可变的,但是有的时候,我们要用到字符串的拼接,如果拼接的数量小的时候,还可以,但是如果拼接的数据量太大的话,内存的占用就太大了,所以这个时候再用S ...

  9. 「CF516D」 Drazil and Morning Exercise

    「CF516D」 Drazil and Morning Exercise 传送门 这个 \(f_i\) 显然可以通过树形 \(\texttt{DP}\) 直接求. 然后看到这种差值问题感觉就可以二分转 ...

  10. Kubernetes全栈架构师(二进制高可用安装k8s集群部署篇)--学习笔记

    目录 二进制高可用基本配置 二进制系统和内核升级 二进制基本组件安装 二进制生成证书详解 二进制高可用及etcd配置 二进制K8s组件配置 二进制使用Bootstrapping自动颁发证书 二进制No ...