文档章节

linux shell 数组建立及使用技巧

xxjbs001
 xxjbs001
发布于 2015/04/22 10:20
字数 569
阅读 15
收藏 0

linux shell在编程方面比windows 批处理强大太多,无论是在循环、运算。已经数据类型方面都是不能比较的。 下面是个人在使用时候,对它在数组方面一些操作进行的总结。

 

1.数组定义

 

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ echo $a
1

 

一对括号表示是数组,数组元素用“空格”符号分割开。

 

2.数组读取与赋值

  • 得到长度

[chengmo@centos5 ~]$ echo ${#a[@]}
5

用${#数组名[@或*]} 可以得到数组长度

  • 读取

[chengmo@centos5 ~]$ echo ${a[2]}
3

[chengmo@centos5 ~]$ echo ${a[*]}
1 2 3 4 5   

用${数组名[下标]} 下标是从0开始  下标是:*或者@ 得到整个数组内容

  • 赋值:

[chengmo@centos5 ~]$ a[1]=100

[chengmo@centos5 ~]$ echo ${a[*]}
1 100 3 4 5

 

[chengmo@centos5 ~]$ a[5]=100    
[chengmo@centos5 ~]$ echo ${a[*]}

1 100 3 4 5 100

直接通过 数组名[下标] 就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素

  • 删除:

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ unset a
[chengmo@centos5 ~]$ echo ${a[*]}

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ unset a[1]  
[chengmo@centos5 ~]$ echo ${a[*]}
1 3 4 5
[chengmo@centos5 ~]$ echo ${#a[*]}
4

直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。

 

 

3.特殊使用

  • 分片:

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ echo ${a[@]:0:3}
1 2 3
[chengmo@centos5 ~]$ echo ${a[@]:1:4}
2 3 4 5

[chengmo@centos5 ~]$ c=(${a[@]:1:4})
[chengmo@centos5 ~]$ echo ${#c[@]}
4
[chengmo@centos5 ~]$ echo ${c[*]}
2 3 4 5

直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,上面例子:c 就是一个新数据。

  • 替换:

[chengmo@centos5 ~]$ a=(1 2 3 4 5)   
[chengmo@centos5 ~]$ echo ${a[@]/3/100}
1 2 100 4 5
[chengmo@centos5 ~]$ echo ${a[@]}
1 2 3 4 5
[chengmo@centos5 ~]$ a=(${a[@]/3/100})
[chengmo@centos5 ~]$ echo ${a[@]}    
1 2 100 4 5

调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。

 

从上面讲到的,大家可以发现linux shell 的数组已经很强大了,常见的操作已经绰绰有余了。

本文转载自:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html

共有 人打赏支持
xxjbs001
粉丝 55
博文 749
码字总数 215621
作品 0
浦东
QA/测试工程师
私信 提问
linux shell脚本编程学习总结

0.linux shell脚本编程 对于一些简单的操作,我们可以直接通过在linux 命令行执行就可以了,比如列出文件命令ls -l,但是有时候我们需要完成的任务需要连续执行多条linux命令,而且他们之间具...

i_am_alone
08/11
0
0
Linux Shell 数组建立及使用技巧

linux shell在编程方面比windows 批处理强大太多,无论是在循环、运算。已经数据类型方面都是不能比较的。 下面是个人在使用时候,对它在数组方面一些操作进行的总结。 1.数组定义 1 2 一对括...

Foundation
2015/09/28
29
0
Linux下的Shell工作原理

Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序。它不 属于内核部分,而是在核心之外,以用户态方式运行。其基本功能是解释并 执行用户打入的各种命令,实现用户与Linux核心...

yhhedu
2014/05/04
0
0
Linux下内网反弹技巧总结与杂谈

导读 靠谱点的公司都不会将应用服务器直接对外,而是通过代理转发或映射等方式对外,当可以执行命令的服务器能够访问公网(这个要看具体情况,比如需要加载公网资源或者其他需求)时,反连技...

问题终结者
07/08
0
0
Shell编程进阶篇(完结)

   1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行。 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,...

侯召顺
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

YARN调度

理想情况下,应用对YARN发起的资源请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用对资源的请求经常需要等待一段时间才能获取到相应的资源。在YARN中...

hblt-j
36分钟前
2
0
python通过SMTP协议发送纯文本邮件

from email.mime.text import MIMETextmsg = MIMEText('hello, world..', 'plain', 'utf-8') 构造MIMEText对象,第一个参数是邮件正文,第二个参数是MIME的subtype(plain代表纯文本),第三个...

灰白发
46分钟前
1
0
springMVC使用 @RequestBody接收对象含有日期时候报错

后台传的json对象时间格式为“YYYY-MM-dd”时自动转换成时间对象 对于其他格式的则不能处理 需要注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date test...

xiaomin0322
46分钟前
2
0
Windows系统查看某个端口被谁占用

按 win + R 打开cmd 输入 netstat -ano 例如,我们发现58332端口被占用了,然后最后显示的PID位10608 下面我们要找出占用这个端口的程序 输入tasklist|findstr "10608" 回车,发现是TIM占用的 ...

lanyu96
48分钟前
2
0
mysql——GROUP BY和HAVING

GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 select子句中的列名必须为分组列或列函数,列函数对于group by子句定义的每个组返回一个结果。...

编译中ing
52分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部