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添加数组
判断一个元素是否在数组中