1、数组定义
[root@bastion-IDC ~]# a=(1 2 3 4 5 6 7 8)[root@bastion-IDC ~]# echo $a
⼀对括号表⽰是数组,数组元素⽤“空格”符号分割开。2、数组读取与赋值1)得到长度:
[root@bastion-IDC ~]# echo ${#a[@]}8
[root@bastion-IDC ~]# echo ${#a[*]}8
⽤${#数组名[@或*]} 可以得到数组长度2)读取:
[root@bastion-IDC ~]# echo ${a[4]}5
[root@bastion-IDC ~]# echo ${a[*]}1 2 3 4 5 6 7 8
⽤${数组名[下标]} 下标是从0开始 下标是:*或者@ 得到整个数组内容3)赋值:
[root@bastion-IDC ~]# a[1]=100[root@bastion-IDC ~]# echo ${a[*]} 1 100 3 4 5 6 7 8
[root@bastion-IDC ~]# a[5]=140[root@bastion-IDC ~]# echo ${a[*]} 1 100 3 4 5 140 7 8
直接通过 数组名[下标] 就可以对其进⾏引⽤赋值,如果下标不存在,⾃动添加新⼀个数组元素4)删除:
[root@bastion-IDC ~]# a=(1 2 3 4 5 6 7 8)[root@bastion-IDC ~]# unset a[root@bastion-IDC ~]# echo ${a[*]}[root@bastion-IDC ~]# a=(1 2 3 4 5 6 7 8)[root@bastion-IDC ~]# unset a[1][root@bastion-IDC ~]# echo ${a[*]}1 3 4 5 6 7 8
[root@bastion-IDC ~]# echo ${#a[*]}7
直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。3、特殊使⽤1)分⽚:
[root@bastion-IDC ~]# a=(1 2 3 4 5 6 7 8)[root@bastion-IDC ~]# echo ${a[@]:0:3}1 2 3
[root@bastion-IDC ~]# echo ${a[@]:1:4}2 3 4 5
[root@bastion-IDC ~]# c=(${a[@]:1:4})[root@bastion-IDC ~]# echo ${#c[@]}4
[root@bastion-IDC ~]# echo ${c[*]} 2 3 4 5
直接通过 ${数组名[@或*]:起始位置:长度} 切⽚原先数组,返回是字符串,中间⽤“空格”分开,因此如果加上”()”,将得到切⽚数组,上⾯例⼦:c 就是⼀个新数据。2)替换:
[root@bastion-IDC ~]# a=(1 2 3 4 5 6 7 8)[root@bastion-IDC ~]# echo ${a[@]/3/100}1 2 100 4 5 6 7 8
[root@bastion-IDC ~]# echo ${a[@]}1 2 3 4 5 6 7 8
[root@bastion-IDC ~]# a=(${a[@]/3/100})
[root@bastion-IDC ~]# echo ${a[@]}1 2 100 4 5 6 7 8
调⽤⽅法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上⾯例⼦,重新定义数据。4、截取⾃⼰需要的数组元素
#!/bin/bashSERVER=$1
echo '------starting----------'
SERVERS=('192.168.1.10' '192.168.10.10' '192.168.10.11' '192.168.10.12' '192.168.10.13' '192.168.100.100')#for i in ${SERVERS[@]}#do
# echo \"--\"$i#done
# [01]
function log() {
if [ $1 == \"info\" ]; then
echo -e \"\\033[32;40m$2\\033[0m\" elif [ $1 == \"error\" ]; then
echo -e \"\\033[31;40m$2\\033[0m\" elif [ $1 == \"debug\" ]; then
echo -e \"\\033[34;40m$2\\033[0m\" fi}
PUSH_SERVER=${SERVERS[0]}
PROXY_SERVER=${SERVERS[${#SERVERS[*]}-1]}echo \"PUSH_SERVER = \"$PUSH_SERVERecho \"PROXY_SERVER = \"$PROXY_SERVER#echo \"获取数组的长度1 = \"${#SERVERS[@]}unset SERVERS[0]
unset SERVERS[${#SERVERS[@]}]
#echo \"获取数组的长度2 = \"${#SERVERS[@]}echo '------------------------------before-------------------'
# condition install:case $SERVER in
#------------------------------------------------------------------------------------ # 推流分发录像服务器
#------------------------------------------------------------------------------------ # [1] 推流
###################################################################################### \"${PUSH_SERVER}\") sleep 1 ;;
#------------------------------------------------------------------------------------ # 反向代理Proxy
#------------------------------------------------------------------------------------ ###################################################################################### #\"${SERVERS[3]}\") 获取数组的最后⼀个元素为直播节点CDN \"${PROXY_SERVER}\") sleep 1 ;; *)
log debug \"------------------ CURRENT IP-------------------\"${SERVER} for i in ${SERVERS[@]} do
echo \"--\"$i done ;;esac
因篇幅问题不能全部显示,请点此查看更多更全内容