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

shell数组操作简明总结

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

    本文导语:  数组作为一种特殊的数据结构在任何一种编程语言中都有它的一席之地,当然bash shell也不例外。本文就shell数组来做一个小的总结。在这里只讨论一维数组的情况,关于多维数组(事实上,你得用一维数组的方法来模拟),不涉...


数组作为一种特殊的数据结构在任何一种编程语言中都有它的一席之地,当然bash shell也不例外。本文就shell数组来做一个小的总结。

在这里只讨论一维数组的情况,关于多维数组(事实上,你得用一维数组的方法来模拟),不涉及。这里包括数组的复制,计算,删除,替换。

1.数组的声明:

代码如下:
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变量当作数组来处理,但数组元素只有字符串本身

2.数组的访问:
代码如下:
1)${array[key]} # ${array[1]}

3.数组的删除
代码如下:
1)unset array[1] # 删除数组中第一个元素
2)unset array # 删除整个数组

4.计算数组的长度:
代码如下:
1)${#array}
2)${#array[0]} #同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的区别

5.数组的提取
从尾部开始提取:
代码如下:
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

6.子串删除
代码如下:
[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

7.子串替换
代码如下:
[root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )[code]
第一个匹配到的,会被删除
[code][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

    
 
 

您可能感兴趣的文章:

  • 在shell中有数组吗
  • bash shell 之下如何定义数组?
  • shell中如何去掉数组里重复的变量
  • linux 的shell(bash)中有数组吗?
  • Ubuntu shell 声明数组
  • shell 脚本中如何用数组中的值给其它变量赋值
  • shell 数组能否获得下标
  • shell中读取一个文本文件将内容按行保存成数组变量
  • shell 中有没有二维数组
  • shell for循环与数组应用介绍
  • 100分请教高手如何把shell的命令输出保存为一个数组
  • shell 含有参数的数组名
  • Shell 中如何使用变量数组?
  • 求一个完整的shell脚本,遍历显示一个字符串数组的所有元素的,急啊
  • 在shell中使用数组需要什么特殊的条件马? 怎么在有的linux下能够用,在有的linux下就不能能使用?
  • shell 脚本如何把一个文件的内容逐行地赋值给一个数组?
  • 一个shell数组的问题
  • bash shell 将一字符串转换成数组
  • 通过实例深入理解linux shell数组
  • linux shell数组深入学习理解
  • 紧急求救!!!!如何在shell脚本中,执行对mysql的操作
  • 急问:!!如何使用shell作如下操作?
  • shell命令操作快捷方式咨询
  • shell编程急问!关于数据库操作的。
  • Shell能否进行文件的读、写操作~?
  • shell的串行操作问题
  • 怎样在shell中调用ping,traceroute命令,并对读取文件中的地址进行操作?
  • 以普通用户的身份登陆到unix,能不能调用shell执行特定的操作?
  • 请问shell中如何模拟响应一个键盘操作
  • 【在线急等求助】UNIX-shell程序,对文本文件进行操作
  • shell中屏显和写文件同时操作的命令是什么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux Shell 常见的命令行格式简明总结
  • Linux中执行shell脚本的4种方法总结
  • shell 中数学计算总结
  • shell自定义函数的6个特点总结
  • 总结的7个shell字符串操作方法和实例分享
  • Shell脚本test命令使用总结和实例
  • shell脚本中28个特殊字符的作用简明总结
  • Shell编程之Shell变量学习总结
  • Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)
  • shell脚本学习与总结
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。 iis7站长之家
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • 请问一个shell中如何获取这个shell自身抛出的错误?
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell


  • 站内导航:


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

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

    浙ICP备11055608号-3