Shell-02-数据类型




shell数据类型

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

字符串

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

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

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

1 字符串拼接

image-20210805104215440


2 获取字符串长度

image-20210805104250624


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

image-20210805104318144


4 替换字符串

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

image-20210805104404040

image-20210805104413771


5 字符串删除

image-20210805104437853



整数型

在Shell中所有的变量默认都是字符串型。
也就是说,如果不手工指定变量的类型,那么所有的数值都是不能进行运算的

如果想要进行数学运算,可以使用“$((运算式))”或“$[运算式]”方式运算

image-20210805105424191

image-20210805105539247

如果想进行小数运算可以借助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

image-20210805113612340


数组的其他示例

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

image-20210805113404697


遍历数组

image-20210805113423970


while read line添加数组

image-20210805113440592


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

image-20210805113458463


posted @ 2021-08-05 11:15  李成果  阅读(1188)  评论(0编辑  收藏  举报