当前位置:  操作系统/服务器>linux

通过实例深入理解linux shell数组

    来源: 互联网  发布时间:2014-10-14

    本文导语:  本文为大家介绍linxu shell中数组的相关知识,并举了很多例子供参考,包括数组的复制,计算,删除,替换等,是学习shell 数组的不可多得的好文章。 数组的声明: 1)array[key]=value # array[0]=one,array[1]=two2)declare -a array # array被当作...

本文为大家介绍linxu shell中数组的相关知识,并举了很多例子供参考,包括数组的复制,计算,删除,替换等,是学习shell 数组的不可多得的好文章。

数组的声明:

1)array[key]=value # array[0]=one,array[1]=two
2)declare -a array # array被当作数组名
3)array=( value1 value2 value3 ... )
4)array=( [1]=one [2]=two [3]=three ... )
5)array="one two three" # echo ${array[0|@|*]},把array变量当作数组来处理,但数组元素只有字符串本身

数组的访问:

1)${array[key]} # ${array[1]}

数组的删除

1)unset array[1] # 删除数组中第一个元素
2)unset array # 删除整个数组

计算数组的长度:

代码如下:

${#array}
${#array[0]} #同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的区别


数组的提取

从尾部开始提取:
代码如下:

array=( [0]=one [1]=two [2]=three [3]=four )
${array[@]:1} # two three four,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素
${array[@]:0:2} # one two
${array[@]:1:2} # two three

子串删除
代码如下:

[root@localhost dev]# echo ${array[@]:0}
one two three four

[root@localhost dev]# echo ${array[@]#t*e} # 左边开始最短的匹配:"t*e",这将匹配到"thre"
one two e four

[root@localhost dev]# echo ${array[@]##t*e} # 左边开始最长的匹配,这将匹配到"three"
[root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )

[root@localhost dev]# echo ${array[@] %o} # 从字符串的结尾开始最短的匹配
one tw three four

[root@localhost dev]# echo ${array[@] %%o} # 从字符串的结尾开始最长的匹配
one tw three four


子串替换
代码如下:

[root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )
第一个匹配到的,会被删除
[root@localhost dev]# echo ${array[@] /o/m}
mne twm three fmur

所有匹配到的,都会被删除
[root@localhost dev]# echo ${array[@] //o/m}
mne twm three fmur

没有指定替换子串,则删除匹配到的子符
[root@localhost dev]# echo ${array[@] //o/}
ne tw three fur

替换字符串前端子串
[root@localhost dev]# echo ${array[@] /#o/k}
kne two three four

替换字符串后端子串
[root@localhost dev]# echo ${array[@] /%o/k}
one twk three four


    
 
 

您可能感兴趣的文章:

  • 关于数组,为什么这么写编译也能通过?
  • php通过数组实现多条件查询实现方法(字符串分割)
  • java通过复选框控件数组实现添加多个复选框控件示例分享
  • Java输出通过InetAddress获得的IP地址数组详细解析
  • 如何在java中获取dll中的字符串或者字符数组(通过jni)?
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • 万般火急!关于java打印,已经得到printerJob实例,那么怎么通过它得到Pageable实例?
  • C++通过TerminateProess结束进程实例
  • 怎样判断一个对象是通过什么类实例化出来的?
  • Java通过接口实现匿名类的实例代码
  • C语言创建链表错误之通过指针参数申请动态内存实例分析
  • php实例分享之通过递归实现删除目录下的所有文件详解
  • 通过LinQ查询字符出现次数的实例方法
  • Android下通过httpClient发送GET和POST请求的实例代码
  • Android通过手势实现的缩放处理实例代码
  • C#通过XML节点属性/属性值读取写入XML操作代码实例
  • Android 通过当前经纬度获得城市的实例代码
  • 想java通过socket和c++通讯,哪位有这方面资料或实例?
  • 小弟写了一个很简单的动态库实例函数用来学习,但编译通过之后执行可执行文件报错。跪请高手帮忙!!!!
  • 通过jxl.jar 读取、导出excel的实例代码
  • 通过Android trace文件分析死锁ANR实例过程
  • 通过代理类实现java连接数据库(使用dao层操作数据)实例分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法! iis7站长之家
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • php通过socket_bind()设置IP地址代码示例
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过javascript库JQuery实现页面跳转功能代码
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • linux下通过crond实现自动执行程序
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • 通过docker commit命令保存对docker容器的修改
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • 通过docker run命令运行新的docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 通过docker ps命令检查运行中的docker镜像
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • Session id实现通过Cookie来传输方法及代码参考
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • 通过docker search命令搜索可用docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • Python3通过request.urlopen实现Web网页图片下载
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3