shell笔记之数组

定义数组的方法:

传统

 [root@web01 ~]# array=(a b c d)
 [root@web01 ~]# echo ${array[*]}
 a b c d

多行元素信息定义数组

 array=(
 http://www.baidu.com
 http://www.google.com
 http://bbs.dz.com
 )

指定数组元素下标定义方式

 [root@web01 ~]# array=([1]=a [2]=b [3]=c)
 [root@web01 ~]# echo ${array[1]}
 a
 [root@web01 ~]# array[1]=fake
 [root@web01 ~]# array[2]=hydra
 [root@web01 ~]# echo ${array[1]}
 fake

动态定义数组元素信息

 [root@web01 ~]# array=(`ls /root`)
 [root@web01 ~]# echo ${array[0]}
 anaconda-ks.cfg
 [root@web01 ~]# ls
 anaconda-ks.cfg  install.log.syslog 
调用数组中的元素
 [root@web01 ~]# echo ${array[@]}
 a b c d
 [root@web01 ~]# echo ${array[0]}
 a
 [root@web01 ~]# echo ${array[1]}
 b
 [root@web01 ~]# echo ${array[2]}
 c
 [root@web01 ~]# echo ${array[3]}
 d
统计数组中元素的长度
 [root@web01 ~]# echo ${#array[*]}
 4
 [root@web01 ~]# array=(fake hydra)
 [root@web01 ~]# echo ${#array[*]}
 2
测试练习

习题一:
读取下面字符串的内容,读取出小于3的字符串,并进行打印
i am a student my name is fakehydra
解题:
数组解:
[root@web01 scripts]# cat zy03.sh
array=(i am a student my name is fakehydra)
for ((i=0;i<${#array[@]};i++))
do
if [ ${#array[i]} -lt 3 ]
then
echo ${array[i]}
fi
done

利用awk进行解:

 echo "I am oldboy teacher I am 35"|awk '{for(i=1;i<=NF;i++)if(length($i)<3)print $i}'	
 	
 echo "I am oldboy teacher I am 35"|xargs -n1|awk '{if(length($1)<3)print $1}'
 	
 echo "I am oldboy teacher I am 35"|awk '{for(i=1;i<=NF;i++)if(length($i)<3)print $i;else print $0}'

习题二:
批量检查多个网站地址是否正常
具体要求:
①. 使用shell数组方法实现, 检测策略尽量模拟用户访问
②. 每10秒钟做一次所有的检测, 无法访问的输出报警
③. 待检测的地址信息
http://blog.oldboyedu.com
http://blog.etiantian.org
http://oldboy.blog.51cto.com
http://10.0.0.7

解题:

 [root@web01 scripts]# cat zy04.sh
 array=(
 http://blog.oldboyedu.com
 http://blog.etiantian.org
 http://oldboy.blog.51cto.com
 http://10.0.0.7	
 )
 main (){
 for ((i=0;i<${#array[@]};i++))
 do
 wget -T 5 -t 3 -q --spider  ${array[$i]}
 if [ $? -eq 0 ]
 then
 echo "${array[$i]} 访问ok"
 else
 echo "${array[$i]} 访问失败"
 fi
 done
 }
 while true 
 do
 main
 sleep 10
 done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值