## 一对括号表示数组,数组元素用"空格"符号分隔开 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
[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 数组[下标] 能够清除相应的元素,不带下标,清除整个数据。code
[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