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. SESSION和JWT

    1.传统登录的方式是使用 session + token,比较适用于Web应用的会话管理.token 是指在客户端使用 token 作为用户状态凭证,浏览器一般存储在 localStorage 或者 ...

  2. FreeRTOS+LVGL|Freertos+lvgl如何配置lvgl的心跳和任务管理器

    目录 配置lvgl心跳(Tick) 配置lvgl任务管理器(Task Handler) LVGL中文手册 lvgl需要系统滴答声(心跳)才能知道动画和其他任务的经过时间,所以我们必须要配置好lvgl的 ...

  3. python使用笔记003-文件操作(一)

    文件操作分为: 1.打开文件,如果文件在当前目录下直接写文件名,如果文件在其他目录下写绝对路径 2.读/写文件 3.关闭文件 一.文件打开模式 # 'r':只读,文件读取后,会有文件指针记录读取文件的 ...

  4. 禅道项目管理软件-Linux上一键安装

    一.安装 1.将安装包直接解压到/opt目录下 特别说明:不要解压到别的目录再拷贝到/opt/,因为这样会导致文件的所有者和读写权限改变,也不要解压后把整个目录777权限. 可以使用命令: tar - ...

  5. 简单梳理 ES6 函数

    箭头函数 箭头函数提供了一种更加简洁的函数书写方式.基本语法是 参数 => 函数体 基本用法: var f = v => v; //等价于 var f = function(a){ ret ...

  6. 从代码生成说起,带你深入理解 mybatis generator 源码

    枯燥的任务 这一切都要从多年前说起. 那时候刚入职一家新公司,项目经理给我分配了一个比较简单的工作,为所有的数据库字段整理一张元数据表. 因为很多接手的项目文档都不全,所以需要统一整理一份基本的字典表 ...

  7. python -- 模块与类库

    一.模块 模块(Module)是由一组类.函数和变量组成的,模块文件的扩展名是.py或.pyc 在使用模块之前,需要先使用import语句导入这个模块. 语法格式如下: import 模块名 from ...

  8. 04 AOF日志:宕机了,Redis如何避免数据丢失

    接下来两篇将记录Redis持久化存储两大技术:AOF日志.RDB快照 本篇重点 "AOF日志实现""AOF日志三种写回策略""AOF重写--避免日志过 ...

  9. tomcat的单例多线程代码示例(十)

    一.懒汉式单例多线程模式 1.创建模拟的servlet生成器 package cn.bjsxt.sing; import java.util.UUID; public class LszySingle ...

  10. NumPy之:多维数组中的线性代数

    目录 简介 图形加载和说明 图形的灰度 灰度图像的压缩 原始图像的压缩 总结 简介 本文将会以图表的形式为大家讲解怎么在NumPy中进行多维数据的线性代数运算. 多维数据的线性代数通常被用在图像处理的 ...