Shell中数据类型不多,比如说字符串,数字类型,数组。数组是其中比较重要的一种,同时Shell中的数组不像JAVA/C,只能是一维数组,没有二维数组;数组元素大小无约束,也无需先定义数组的元素个数;但其索引则像JAVA/C/Python,从0开始,下面是我学习过程的一些总结。
定义:
shell的定义和python相似格式如下
数组的基本操作获取数组
读取某个下标的值:$
获取数组长度:\${#数组名[@/*]} 即\${#数组名[*]}或${#数组名[@]}
求元素长度: \${#数组名[index]}
expr length \$
\$ wc -L
添加数组
直接添加 数组[index]=值 index大于数组长度则在最后添加
利用旧数组创建新的 newArrays=($ 值)
修改数组
直接修改 数组[index]=值
删除数组
删除元素 unset 数组[index]
删除数组 unset 数组
数组的截取
和字符串相似,可以和字符串的方法对比着看。
假设有变量
1. # 号截取,从左到右进行最短匹配查找。
其中 var 是变量名,# 号是运算符,b*o 表示从左边开始查找
即删除 bo
结果是 :ok food
2. ## 号截取,从左到右进行最长匹配查找
即删除boo
结果是 k food
3. %号截取,从右到左进行最短匹配查找
%/* 表示从右边开始,删除第一个 od
结果是:book fo
4. %% 号截取,删从右到左进行最长匹配查找
%% 表示从右边开始,删除最后(最右边边)一个 o0d号
结果是:book f
5. 从左边第几个字符开始,及字符的个数
其中的 0 表示左边第一个字符开始,2 表示字符的总个数。
结果是:1 2
6. 从左边第几个字符开始,一直到结束。
其中的 1表示左边第2个字符开始,一直到结束。
结果是 :3 4
7. 从右边第几个字符开始,及字符的个数
其中的 -2表示右边算起第2个字符开始,2表示字符的个数。
结果是:3 4
8.元素切片
数组替换
$最小匹配替换,每个元素只替换一次
$最大匹配替换,每个元素可替换多次
$最小匹配删除,只删除一个符合规定的元素
$最大匹配删除,可删除多个符合规定的元素
这个和前面相似就不举例子了。
领取专属 10元无门槛券
私享最新 技术干货