您的位置:首页 > 运维架构 > Shell

shell 中的数组的使用

2016-12-06 00:00 183 查看

数组的生成

## 一对括号表示数组,数组元素用"空格"符号分隔开

1. 直接赋值
a=(1 2 3 4)

2. seq
a=$(seq 1 11)    # 表示生成一个从1到11的数组,步进为1.
b=$(seq 1 3 11)  # 表示生成一个 1,4,7,10 的数组,步进为3.

3. .. 扩展
a=$(echo {1..4})

数组的输出

1. 直接echo输出:

[yongfu@yf-20: ~] 15:54:12
$ a=(1 2 3 4)

[yongfu@yf-20: ~] 15:54:18
$ echo ${a[@]}    # 输出整个数组
1 2 3 4

[yongfu@yf-20: ~] 15:54:20
$ echo ${a[*]}    # 输出整个数组
1 2 3 4

[yongfu@yf-20: ~] 15:54:26
$ echo $a         # $a并不表示数组,只表示数组的第一个元素${a[0]}
1

[yongfu@yf-20: ~] 15:54:33
$ echo ${a[3]}    # 输出第"四"个元素
4

2. for 循环输出

[yongfu@yf-20: ~] 15:41:36
$ a=(1 2 3 4)

[yongfu@yf-20: ~] 15:50:04
$ for i in ${a[@]} ; do echo $i ; done
1
2
3
4

数组的下标(数组的key)

[yongfu@yf-20: ~] 15:54:39
$ echo ${!a[@]}
0 1 2 3

数组中元素的个数/长度

[yongfu@yf-20: ~] 15:56:31
$ echo ${#a[@]}
4

修改数组元素

[yongfu@yf-20: ~] 15:58:05
$ a[1]=100
[yongfu@yf-20: ~] 15:59:09
$ echo ${a[@]}
1 100 3 4

新增数组元素

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

[yongfu@yf-20: ~] 16:01:25
$ a[4]=200
[yongfu@yf-20: ~] 16:01:43
$ echo ${a[@]}
1 100 3 4 200

删除数组元素

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

[yongfu@yf-20: ~] 16:01:47
$ a=(1 2 3 4 5)
[yongfu@yf-20: ~] 16:04:07
$ unset a
[yongfu@yf-20: ~] 16:04:12
$ echo ${a[@]}

[yongfu@yf-20: ~] 16:04:20
$ a=(1 2 3 4 5)
[yongfu@yf-20: ~] 16:04:35
$ unset a[1]
[yongfu@yf-20: ~] 16:04:43
$ echo ${a[@]}
1 3 4 5
[yongfu@yf-20: ~] 16:04:47
$ echo ${#a[@]}
4

分片

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

[yongfu@yf-20: ~] 16:04:56
$ a=(1 2 3 4 5)
[yongfu@yf-20: ~] 17:09:40
$ echo ${a[@]:0:3}
1 2 3
[yongfu@yf-20: ~] 17:09:50
$ echo ${a[@]:1:4}
2 3 4 5
[yongfu@yf-20: ~] 17:09:55
$  c=(${a[@]:1:4})
[yongfu@yf-20: ~] 17:10:05
$ echo ${#c[@]}
4
[yongfu@yf-20: ~] 17:10:13
$ echo ${c[@]}
2 3 4 5

替换

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

[yongfu@yf-20: ~] 17:11:17
$ a=(1 2 3 4 5)
[yongfu@yf-20: ~] 17:11:19
$  echo ${a[@]/3/100}
1 2 100 4 5
[yongfu@yf-20: ~] 17:11:25
$ echo ${a[@]}
1 2 3 4 5
[yongfu@yf-20: ~] 17:11:32
$ a=(${a[@]/3/100})
[yongfu@yf-20: ~] 17:11:38
$ echo ${a[@]}
1 2 100 4 5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell