#!/bin/bash
arr[0]=linux
arr[1]=redis
arr[2]=mysql
arr[@] 遍历所有的值
arr[*] 遍历所有的值
${!arr[@]} 返回值的数组下标
#数组赋值
array=([0]=linux [1]=shell [2]=mysql [3]=kvm)
array=(linux shell mysql kvm)
#未定义的变量,最后都是赋值为0
array[index1]=mysql
array[index2]=redis
echo array #-->>输出的是redis
因为无法识别index1,所以会覆盖
真要使用上面的方法,则使用declare -A array进行关联数组
array=([index1]=linux [index2]=shell [index3]=mysql [index4]=kvm)
案列1:循环ping ip
**
#!/bin/bash
IP=(
120.77.146.250
120.77.146.251
120.77.146.252
)
for i in ${IP[@]}
do
ping -c 1 -W1 ${i}>/dev/null 2>&1
[ $? -eq 0 ]&& echo "${i}可ping通"
done
案列2:将数组下标自定义变量,获取其值
主要还是要关联数组,不然是不可以的
#!/bin/bash
declare -A array
while read line
do
let array[$line]++
done<~/shell/set.txt
for i in ${!array[*]}
do
echo "$i 出现了 ${array[${i}]} 次"
done