Shell数组
跳转到导航
跳转到搜索
1定义
直接用圆括号包数组元素包起来,数组元素之间用空格隔开就行了,bash支持一维数组(不支持多维数组) 定义数组的一般形式为: array_name=(value1 ... valuen) 或者 array_name=( value0 value1 value2 value3 ) evan@evanpc:~$ a=(1 2 3 4 5 ) evan@evanpc:~$ echo $a
usage 2020
evan@bsd-latop:~/lx/zabbix/api_zbx % cat p
IP=(
1.40.16.31
1.41.101.200
)
HOSTNAME=(
prod-sns-web1
prod-sns-web2
)
for no in seq 0 1
do
# echo ${a[0]}
echo ${IP[$no]}
echo ${HOSTNAME[$no]}
done
evan@bsd-latop:~/lx/zabbix/api_zbx % bash p
1.40.16.31
prod-sns-web1
1.41.101.200
prod-sns-web2
#oh no
1gb-sfo2-01:~$ bash 1.sh
1.40.16.31
prod-sns-web1
1.40.16.31
prod-sns-web1
1.41.101.200
prod-sns-web2
2.数组读取与赋值
数组长度
用${#数组名[@或*]} 可以得到数组长度
evan@evanpc:~$ echo ${#a[@]}
5
读取:
用${数组名[下标]} 下标是从0开始 下标是:*或者@ 得到整个数组内容
evan@evanpc:~$ echo ${a[0]}
1
evan@evanpc:~$ echo ${a[2]}
3
evan@evanpc:~$ echo ${a[*]}
1 2 3 4 5
赋值:
直接通过 数组名[下标] 就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素
evan@evanpc:~$ a[1]=100
evan@evanpc:~$ echo ${a[*]}
1 100 3 4 5
evan@evanpc:~$ a[6]=100
evan@evanpc:~$ echo ${a[*]}
1 100 3 4 5 100
删除:
直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。
evan@evanpc:~$ a=(1 2 3 4 5 )
evan@evanpc:~$ unset a
evan@evanpc:~$ echo ${a[*]}
evan@evanpc:~$ a=(1 2 3 4 5 )
evan@evanpc:~$ unset a[1]
evan@evanpc:~$ echo ${a[*]}
1 3 4 5
evan@evanpc:~$ echo ${#a[*]}
4
3.特殊使用
分片:
直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,下面例子:c 就是一个新数据。
evan@evanpc:~$ a=(1 2 3 4 5 )
#从0 也就是第一个元素开始,切出3个元素
evan@evanpc:~$ echo ${a[@]:0:3}
1 2 3
evan@evanpc:~$ echo ${a[@]:1:4}
2 3 4 5
evan@evanpc:~$ c=(${a[@]:1:4})
evan@evanpc:~$ echo ${#c[@]}
4
evan@evanpc:~$ echo ${c[*]}
2 3 4 5
替换:
调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。
evan@evanpc:~$ a=(1 2 3 4 5 )
evan@evanpc:~$ echo ${a[@]/3/100}
1 2 100 4 5
evan@evanpc:~$ echo ${a[@]}
1 2 3 4 5
evan@evanpc:~$ a=(${a[@]/5/500})
evan@evanpc:~$ echo ${a[@]}
1 2 3 4 500
evan@evanpc:~$
数组的遍历
for data in ${array[@]}
do
echo ${data}
done
tar czf ${codefilename} ${baklist_www[@]:0} 2>/dev/null
http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html http://www.tldp.org/LDP/abs/html/ http://c.biancheng.net/cpp/view/7002.html
Shell 数组元素个数${#array[@]} 数组的所有元素${array[*]} 字符串长度${#str} http://zhenshi4597.blog.51cto.com/1891465/871166
[shell] shell数组(array)常用技巧学习实践(数据库备份脚本) http://bbs.linuxtone.org/thread-5317-1-1.html