shell数组使用

目前shell支持一维数据。可使用如下方式进行定义:

array[0]=22
array[2]=44

shell数组说明:
1、数据成员不一定必须是相连的,未定义的取值为空
2、数组下标由0开始

shell数组赋值

# 方式1
array[0]=11
array[3]=44
array[5]=77

# 方式2
array=(one two three four five)

# 方式3
array=([0]=one [1]=two [4]=five)

shell取值

# 获取第0个元素的值
echo ${array[0]}

# 获取第0个元素的长度
echo ${#array[0]}

# 获取数组中的元素个数
echo ${#array[*]}
echo ${#array[@]}

shell元素提取

格式:${array[*]:start_idx:num},其中,start_idx表示开始的下标,num表示多少个元素

# 提取所有元素
echo ${array[*]:0}

# 提取索引3后的所有元素
echo ${array[*]:3}

# 提取索引3后的2个元素
echo ${array[*]:3:2}

删除子元素匹配

#删除最短的模式匹配
array=(one two three four five two)
echo ${array[@]#t*e}  # 输出为one two e four five

#删除最长的模式匹配
echo ${array[@]##t*e} #输出为one two four five two

#删除最短的尾匹配
echo ${array[@]%i*e} #输出为one two three four f two

#删除最长的尾匹配
echo ${array[@]%%f*e} #输出为one two three four two

替换子元素

替换第一个匹配的语法:${array[@]/pattern/dst_value}
替换所有匹配的语法:${array[@]//pattern/dst_value},如果dst_value为空,表示删除匹配的串
替换头匹配的语法:${array[@]/#pattern/dst_value}
替换尾匹配的语法:${array[@]/%pattern/dst_value}

如:

array=(one two three five)
echo ${array[@]/#o/aaa} #输出aaane two three five
echo ${array[@]/%o/aaa} #输出one twaaa three five
echo ${array[@]/o/aaa} #输出aaane twaaa three five
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,464评论 0 5
  • Shell 中数组的定义及遍历,示例:
    数据小白鼠阅读 6,415评论 0 0
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,928评论 0 8
  • 数组和可变性 在Swift中最常见的集合类型非数组莫属。数组是一系列相同类型的元素的有序的容器,对于其中每个元素,...
    为自己丶拼个未来阅读 9,334评论 0 6
  • [UIViewanimateWithDuration:2//执行时间delay:0//延迟时间usingSprin...
    叶麦清香阅读 255评论 0 0