dede免费网站模板utf8,长春地图,网站建设使用的语言,简单大气网站模板From: http://www.embeddedlinux.org.cn/html/jishuzixun/201211/19-2386.html
给大家分享下数组的用法小例子#xff0c;希望能给大家一点帮助。其实SHELL的数组很简单#xff0c;好用。我们学习都应该遵循简单、易用的原则。
shell编程中数组的简单用法及示例 新版本的B…From: http://www.embeddedlinux.org.cn/html/jishuzixun/201211/19-2386.html
给大家分享下数组的用法小例子希望能给大家一点帮助。其实SHELL的数组很简单好用。我们学习都应该遵循简单、易用的原则。
shell编程中数组的简单用法及示例 新版本的Bash支持一维数组. 数组元素可以使用符号variable[xx]等方式来初始化. 另外, 脚本可以使用declare -a variable语句来指定一个数组等。要引用一个数组元素(也就是取值), 可以使用大括号, 访问形式为${variable[xx]}当然了下面是一些老男孩经常使用的方法和对数组的一点理解如有高见欢迎指导先谢谢博友们了。
1.1 shell数组的常用定义方法 1方法一 命令法 dir($(ls .))
范例1手工命令行操作演示 [rootoldboy scripts]# dir($(ls .)) [rootoldboy scripts]# ls . oldboy.log apachemon.sh httpdctl
[rootoldboy scripts]# echo ${#dir[*]} 查看数组的长度 3
命令行循环打印数组元素 写法1 for ((i0; iecho ${#dir[*]}; i)) do echo -e ${dir[$i]}\n done 提示iecho ${#dir[*]}可以用更简单的写法i${#dir[*]}替换感谢永夜兄弟。 写法2 for ((i0; i${#dir[*]}; i)) do echo -e ${dir[$i]}\n done 写法3 for((i0;i${#dir[]};i)) do echo ${dir[${i}]} done
范例2通过脚本定义及输出数组元素 [rootoldboy scripts]# cat printarray.sh dir($(ls .)) for ((i0; i${#dir[*]}; i)) do echo -e ${dir[$i]}\n done [rootoldboy scripts]# sh printarray.sh oldboy.log
apachemon.sh
httpdctl
printarray.sh 2方法二列举元素法 array(red green blue yellow magenta) array( oldboy zhangyue zhangyang ) 范例3列举元素法的脚本例子 [rootoldboy ~# cat test.sh array( oldboy zhangyue zhangyang )
for ((i0; i ${#array[*]}; i)) do echo ${array[$i]} done echo ---------------------- echo array len:${#array[*]} [rootoldboy ~# 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数组方法 [rootoldboy ~]# cat check_url.sh #!/bin/bash # this script is created by oldboy. # e_mail:31333741qq.com # qqinfo:49000448 # function:check web url # version:1.1 . /etc/init.d/functions
url_list( http://)
function wait() { echo -n 3秒后,执行该操作.; for ((i0;i3;i)) do echo -n .;sleep 1 done echo } function check_url() { wait echo check url... for ((i0; 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 [rootoldboy ~]# sh check_url.sh 3秒后,执行该操作.... check url...
提示上述结果是带颜色的。
范例5实现lvs负载均衡健康检查及自动剔除和自动加入RS的脚本多年前的脚本[rootoldboy sbin]# cat health_check_url.sh #!/bin/bash# this script is created by oldboy.# e_mail:31333741qq.com# qqinfo:31333741# function:# version:1.1PORT80VIP192.168.1.181RIP(192.168.1.178192.168.1.179)function check_url(){for ((i0; i ${#RIP[*]}; i))dojudge($(curl -I -s http://${RIP[$i]}|head -1|tr \r \n))if [[ ${judge[1]} 200 ${judge[2]}OK ]]thenif [ ipvsadm -L -n|grep ${RIP[$i]}|wc -l -ne 1 ]thenipvsadm -a -t $VIP:$PORT -r ${RIP[$i]}:$PORTfielseif [ ipvsadm -L -n|grep ${RIP[$i]}|wc -l -eq 1 ]thenipvsadm -d -t $VIP:$PORT -r ${RIP[$i]}:$PORTfifidone}while truedocheck_urlsleep 5done---------------------------------------------------------1.2 阅读博文后可以练习的小例子问题1 把1-3 3个数字存到数组里 分别乘以8 然后依次输出。解答下面的评论里已有正确答案有兴趣的朋友可以先思考写写然后看评论如果有问题欢迎评论提问如果力所能及老男孩愿意为你解答疑惑。问题2一个SHELL脚本oldboy.sh内容为定义一个数组array(1 2 3) 要打印数组元素的个数。 要求要把数组array当作变量在执行脚本时传参到脚本里使用这块是本题的难点 例如这样执行 sh oldboy.sh array