Bash   发布时间:2022-05-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了shell学习二十九--数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
sHell数组 数组:简单的说就是相同数据类型的元素按一定顺序排列的组合。 数组是把有限的类型相同的变量用一个名字命名,然后用用编号区分他们的变量的集合。 这个名字成为数组名,编号成为数组下标。 何为数组?学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合 (不包括有一些编程语言提出来的关联数组的概念)。那么sHell中数组是怎么定义的呢, 我们来看两种数据类型:一是数值类型,二是字符串类型;然sHell本身是弱类型的, 但也可以这么区分。 一堆元素的集合。 数值类型的数组:一对括号表示数组,数组中元素之间使用“空格”来隔开。 举个列子: arr_number=(1 2 3 4 5); 字符串类型数组:同样,使用一对括号表示数组,其中数组中的元素使用双引号或者单引号包含,同样使用“空格”来隔开。 arr_String=("abc" "edf" "sss"); 或者 arr_String=('abc' 'edf' 'sss'); 数组的定义与增删改查 方法1:array=(value1 value2 value3...) 数组定义 [root@node01 ~]# array=(1 2 3) 获取数组的长度 [root@node01 ~]# echo ${#arraY[@]} 3 [root@node01 ~]# echo ${#arraY[*]} 3 数组打印 [root@node01 ~]# echo ${array[0]} 1 [root@node01 ~]# echo ${arraY[1]} 2 [root@node01 ~]# echo ${array[2]} 3 [root@node01 ~]# echo ${arraY[4]} [root@node01 ~]# [root@node01 ~]# echo ${arraY[@]} 1 2 3 数组赋值 [root@node01 ~]# arraY[3]=4 往数组添加值 [root@node01 ~]# echo ${arraY[@]} 1 2 3 4 [root@node01 ~]# echo ${arraY[3]} 4 [root@node01 ~]# arraY[1]=wolf [root@node01 ~]# echo ${arraY[@]} 1 wolf 3 4 [root@node01 ~]# array=(1 2 3) [root@node01 ~]# unset array[0] [root@node01 ~]# echo ${arraY[@]} 2 3 [root@node01 ~]# 数组删除 [root@node01 ~]# unset array [root@node01 ~]# echo ${arraY[@]} [root@node01 ~]# 截取 [root@node01 ~]# echo ${#arraY[@]} 2 [root@node01 ~]# array=(1 2 3 4 5) [root@node01 ~]# echo ${arraY[@]:2:3} 第二个开始截取,取3个 3 4 5 [root@node01 ~]# echo ${arraY[@]:2} 3 4 5 [root@node01 ~]# echo ${arraY[@]:2} 3 4 5 [root@node01 ~]# echo ${arraY[@]:1} 2 3 4 5 [root@node01 ~]# echo ${arraY[@]:0} 1 2 3 4 5 替换(变量子串等操作) [root@node01 ~]# echo ${arraY[@]/3/4} 1 2 4 4 5 调用语法是:${@或者*/查找字符/替换字符}该操作不会改变原先数组内容,如果需要修改,可以看上面的例子,重新定义数组。 [root@node01 ~]# array=(1 2 3 4 5) [root@node01 ~]# array1=(${arraY[@]/2/4}) 2替换为4 [root@node01 ~]# echo ${array1[@]} 1 4 3 4 5 应用 array=($(ls)) [root@node01 ~]# echo ${#arraY[@]} 21 [root@node01 ~]# echo ${arraY[1]} apache-maven-3.3.9-bin.tar.gz [root@node01 ~]# echo ${arraY[@]} anaconda-ks.cfg apache-maven-3.3.9-bin.tar.gz bind-9.10.6 bind-9.10.6.tar.gz Desktop Documents Downloads etc_2017-07-29.tar.gz file grep.log install.log install.log.syslog jenkins.war Music Pictures Public Templates tmp_2017-07-29.tar.gz Videos whoami-strace.txt wolf [root@node01 ~]# for ((i=0; i<${#arraY[@]};i++));do echo ${arraY[$i]};done anaconda-ks.cfg apache-maven-3.3.9-bin.tar.gz bind-9.10.6 bind-9.10.6.tar.gz Desktop Documents Downloads etc_2017-07-29.tar.gz file grep.log install.log install.log.syslog jenkins.war Music Pictures Public Templates tmp_2017-07-29.tar.gz Videos whoami-strace.txt wolf [root@node01 ~]# for i in ${arraY[@]};do echo $i;done anaconda-ks.cfg apache-maven-3.3.9-bin.tar.gz bind-9.10.6 bind-9.10.6.tar.gz Desktop Documents Downloads etc_2017-07-29.tar.gz file grep.log install.log install.log.syslog jenkins.war Music Pictures Public Templates tmp_2017-07-29.tar.gz Videos whoami-strace.txt wolf [root@node01 day13]# vi sz.sh #!/bin/sh array=(laolang wolf zhangs) for ((i=0; i<${#arraY[*]}; i++)) do echo "this is $i,then content is ${arraY[$i]}" done [root@node01 day13]# sh sz.sh this is 0,then content is laolang this is 1,then content is wolf this is 2,then content is zhangs [root@node01 day13]# vi sz.sh #!/bin/sh array=(laolang wolf zhangs) for ((i=0; i<${#arraY[*]}; i++)) do echo "this is $i,then content is ${arraY[$i]}" done for i in ${arraY[@]} do echo "$i" done [root@node01 day13]# sh sz.sh this is 0,then content is zhangs laolang wolf zhangs 数组小结: 定义 array=(1 2 3) array=($(ls)) 打印 ${arraY[@]}所有元素 ${#arraY[@]}所有元素 ${arraY[i]} 单个元素,i是下标 取数组的部分 检查网站URL地址 [root@node01 day13]# cat array01.sh #!/bin/bash [ -f /etc/init.d/functions ] && source /etc/init.d/functions #define array url list array=( http://www.etiantian.org http://www.taobao.com http://oldboy.blog.51cto.com http://www.baidu.com ) #check_url wait(){ echo -n "wait 3s" for((i=0;i<3;i++)) do echo -n "." sleep 1 done echo } check_url(){ wget -T 5 -t 2 --spider $1 &>/dev/null RETVAL=$? if [ $RETVAL -eq 0 ];then action "check $1" /bin/true else action "check $1" /bin/false fi return $RETVAL } main(){ wait for((i=0;i<${#arraY[@]};i++)) do check_url ${arraY[i]} done } main [root@node01 day13]# sh array01.sh wait 3s... check http://www.etiantian.org [ OK ] check http://www.taobao.com [Failed] check http://oldboy.blog.51cto.com [ OK ] check http://www.baidu.com [ OK ]

大佬总结

以上是大佬教程为你收集整理的shell学习二十九--数组全部内容,希望文章能够帮你解决shell学习二十九--数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: