给大家分享下数组的用法小例子,希望能给大家一点帮助。其实SHELL的数组很简单,好用。我们学习都应该遵循简单、易用的原则。
shell编程中数组的简单用法及示例
新版本的Bash支持一维数组. 数组元素可以使用符号variable[xx]等方式来初始化. 另外, 脚本可以使用declare -a variable语句来指定一个数组等。要引用一个数组元素(也就是取值), 可以使用大括号, 访问形式为${variable[xx]},当然了,下面是一些老男孩经常使用的方法和对数组的一点理解,如有高见,欢迎指导,先谢谢博友们了。
1.1 shell数组的常用定义方法:
1)方法一:
命令法:
dir=($(ls .))
范例1:手工命令行 *** 作演示
[root@oldboy scripts]# dir=($(ls .))
[root@oldboy scripts]# ls .
oldboy.log apachemon.sh httpdctl
[root@oldboy scripts]# echo ${#dir[*]} <==查看数组的长度
3
命令行循环打印数组元素:
写法1:
for ((i=0; i<`echo ${#dir[*]}`; i++))
do
echo -e "${dir[$i]}\n"
done
提示:i<`echo ${#dir[*]}`可以用更简单的写法i<${#dir[*]}替换,(感谢永夜兄弟)。
====================================
写法2:
for ((i=0; i<${#dir[*]}; i++))
do
echo -e "${dir[$i]}\n"
done
====================================
写法3:
for((i=0;i<${#dir[@]};i++))
do
echo ${dir[${i}]}
done
范例2:通过脚本定义及输出数组元素:
[root@oldboy scripts]# cat printarray.sh
dir=($(ls .))
for ((i=0; i<${#dir[*]}; i++))
do
echo -e "${dir[$i]}\n"
done
[root@oldboy scripts]# sh printarray.sh
oldboy.log
apachemon.sh
httpdctl
printarray.sh
====================================================
2)方法二:列举元素法
array=(red green blue yellow magenta)
array=(
oldboy
zhangyue
zhangyang
)
范例3:列举元素法的脚本例子
[root@oldboy ~# cat test.sh
array=(
oldboy
zhangyue
zhangyang
)
for ((i=0; i< ${#array[*]}; i++))
do
echo "${array[$i]}"
done
echo ----------------------
echo "array len:${#array[*]}"
[root@oldboy ~# sh test.sh
oldboy
zhangyue
zhangyang
array len:3
3)方法3:其实方法三和方法一一样,因具有很好的实战价值因此单独列出讲解
judge=($(curl -I -s ${url_list[$i]}|head -1|tr "\r" "\n"))
范例4:比较专业的生产检查URL地址的脚本(shell数组方法):
[root@oldboy ~]# cat check_url.sh
#!/bin/bash
# this script is created by oldboy.
# e_mail:31333741@qq.com
# qqinfo:49000448
# funcTIon:check web url
# version:1.1
. /etc/init.d/funcTIons
url_list=(
http://)
funcTIon wait()
{
echo -n '3秒后,执行该 *** 作.';
for ((i=0;i<3;i++))
do
echo -n ".";sleep 1
done
echo
}
funcTIon check_url()
{
wait
echo 'check url...'
for ((i=0; i<${#url_list[*]}; i++))
do
# HTTP/1.1 200 OK
judge=($(curl -I -s ${url_list[$i]}|head -1|tr "\r" "\n"))
if [[ "${judge[1]}" == '200' && "${judge[2]}"=='OK' ]]
then
action "${url_list[$i]}" /bin/true
else
action "${url_list[$i]}" /bin/false
fi
done
}
check_url
[root@oldboy ~]# sh check_url.sh
3秒后,执行该 *** 作....
check url...
提示:上述结果是带颜色的。
范例5:实现lvs负载均衡健康检查及自动剔除和自动加入RS的脚本(多年前的脚本)欢迎分享,转载请注明来源:内存溢出
评论列表(0条)