shell数据类型

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


字符串

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

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

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


1 字符串拼接

Shell-02-数据类型_数组元素


2 获取字符串长度

Shell-02-数据类型_字符串_02


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

Shell-02-数据类型_字符串_03


4 替换字符串

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

Shell-02-数据类型_数据类型_04

Shell-02-数据类型_字符串_05


5 字符串删除

Shell-02-数据类型_字符串_06



整数型

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

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


Shell-02-数据类型_数据类型_07

Shell-02-数据类型_字符串_08

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


Shell-02-数据类型_数组元素_09


数组的其他示例

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


Shell-02-数据类型_字符串_10


遍历数组


Shell-02-数据类型_数据类型_11


while read line添加数组


Shell-02-数据类型_字符串_12


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


Shell-02-数据类型_数组名_13