沈阳电脑维修网,沈阳上门维修电脑服务
当前位置: 主页 > 程序数据代码>数组_程序数据_shell >

数组_程序数据_shell

时间:2011-12-5来源:沈阳电脑维修网 作者: 吕先生:13889116605点击:
沈阳电脑维修,上门维修电脑
     较新的Bash版本支持一维数组.数组元素可以用符号variable[xx]来初始化.另外,脚本可以用declare-avariable语句来清楚地指定一个数组.要访问一个数组元素,可以使用花括号来访问,即${variable[xx]}.例1.简单的数组用法  1#!/bin/bash  2  3  4area[11]=23  5area[13]=37  6area[51]=UFOs  7  8# 数组成员不必一定要连贯或连续的.  9 10# 数组的一部分成员允许不被初始化. 11# 数组中空缺元素是允许的. 12# 实际上,保存着稀疏数据的数组(“稀疏数组”)在电子表格处理软件中非常有用. 13# 14 15 16echo-n"area[11]=" 17echo${area[11]}   # {大括号}是需要的. 18 19echo-n"area[13]=" 20echo${area[13]} 21 22echo"Contentsofarea[51]are${area[51]}." 23 24#没有初始化内容的数组元素打印空值(NULL值). 25echo-n"area[43]=" 26echo${area[43]} 27echo"(area[43]unassigned)" 28 29echo 30 31#两个数组元素的和被赋值给另一个数组元素 32area[5]=`expr${area[11]}+${area[13]}` 33echo"area[5]=area[11]+area[13]" 34echo-n"area[5]=" 35echo${area[5]} 36 37area[6]=`expr${area[11]}+${area[51]}` 38echo"area[6]=area[11]+area[51]" 39echo-n"area[6]=" 40echo${area[6]} 41#这里会失败是因为整数和字符串相加是不允许的. 42 43echo;echo;echo 44 45#----------------------------------------------------------------- 46#另一个数组,"area2". 47#另一种指定数组元素的值的办法... 48#array_name=(XXXYYYZZZ...) 49 50area2=(zeroonetwothreefour) 51 52echo-n"area2[0]=" 53echo${area2[0]} 54#啊哈,从0开始计数(即数组的第一个元素是[0],而不是[1]). 55 56echo-n"area2[1]=" 57echo${area2[1]}   #[1]是数组的第二个元素. 58#----------------------------------------------------------------- 59 60echo;echo;echo 61 62#----------------------------------------------- 63#第三种数组,"area3". 64#第三种指定数组元素值的办法... 65#array_name=([xx]=XXX[yy]=YYY...) 66 67area3=([17]=seventeen[24]=twenty-four) 68 69echo-n"area3[17]=" 70echo${area3[17]} 71 72echo-n"area3[24]=" 73echo${area3[24]} 74#----------------------------------------------- 75 76exit0 Bash允许把变量当成数组来操作,即使这个变量没有明确地被声明为数组.     1string=abcABC123ABCabc  2echo${string[@]}              #abcABC123ABCabc  3echo${string[*]}              #abcABC123ABCabc  4echo${string[0]}              #abcABC123ABCabc  5echo${string[1]}              #没有输出!  6                                #为什么?  7echo${#string[@]}             #1  8                                #数组中只有一个元素.  9                                #且是这个字符串本身. 10 11#Thankyou,MichaelZick,forpointingthisout.例2.格式化一首诗  1#!/bin/bash  2#poem.sh:排印出作者喜欢的一首诗.  3  4#诗的行数(一小节诗).  5Line[1]="Idonotknowwhichtoprefer,"  6Line[2]="Thebeautyofinflections"  7Line[3]="Orthebeautyofinnuendoes,"  8Line[4]="Theblackbirdwhistling"  9Line[5]="Orjustafter." 10 11#出处. 12Attrib[1]="WallaceStevens" 13Attrib[2]="\"ThirteenWaysofLookingataBlackbird\"" 14#此诗是公众的(版权期已经到期了). 15 16echo 17 18forindexin12345   #5行. 19do 20  printf"    %s\n""${Line[index]}" 21done 22 23forindexin12         #打印两行出处行. 24do 25  printf"         %s\n""${Attrib[index]}" 26done 27 28echo 29 30exit0 31 32#练习: 33#-------- 34#修改这个脚本使其从一个文本文件中提取内容打印一首行. 数组元素有它们独有的语法,并且甚至Bash命令和操作符有特殊的选项可以支持数组使用.例3.多种数组操作  1#!/bin/bash  2#array-ops.sh:数组更多有趣的用法.  3  4  5array=(zeroonetwothreefourfive)  6#元素   0  1  2   3    4   5  7  8echo${array[0]}      # zero  9echo${array:0}       # zero 10                       # 第一个元素的参数扩展, 11                       #+从位置0开始(即第一个字符). 12echo${array:1}       # ero 13                       # 第一个元素的参数扩展, 14                       #+从位置1开始(即第二个字符). 15 16echo"--------------" 17 18echo${#array[0]}     # 4 19                       # 数组第一个元素的长度. 20echo${#array}        # 4 21                       # 数组第一个元素的长度. 22                       # (另一种写法) 23 24echo${#array[1]}     # 3 25                       # 数组第二个元素的长度. 26                       # Bash的数组是0开始索引的. 27 28echo${#array[*]}     # 6 29                       # 数组中元素的个数. 30echo${#array[@]}     # 6 31                       # 数组中元素的个数. 32 33echo"--------------" 34 35array2=([0]="firstelement"[1]="secondelement"[3]="fourthelement") 36 37echo${array2[0]}     #第一个元素 38echo${array2[1]}     #第二个元素 39echo${array2[2]}     # 40                       #因为初始化时没有指定,因此值为空(null). 41echo${array2[3]}     #第四个元素 42 43 44exit0 大部分标准的字符串操作符可以用于数组操作.例4.用于数组的字符串操作符  1#!/bin/bash  2#array-strops.sh:用于数组的字符串操作符.  3#由MichaelZick编码.  4#已征得作者的同意.  5  6# 一般来说,任何类似${name...}写法的字符串操作符  7#+都能在一个数组的所有字符串元素中使用  8#+像${name[@]...}或${name[*]...}的写法.  9 10 11arrayZ=(onetwothreefourfivefive) 12 13echo 14 15#提取尾部的子串 16echo${arrayZ[@]:0}    #onetwothreefourfivefive 17                        #所有的元素. 18 19echo${arrayZ[@]:1}    #twothreefourfivefive 20                        #在第一个元素element[0]后面的所有元素. 21 22echo${arrayZ[@]:1:2}  
上一篇:shell脚本中的文件与归档命令_程序数据_shell
下一篇:列表结构_程序数据_shell
查看[数组_程序数据_shell ]所有评论
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:
推荐内容
关于我们 服务价格 联系我们 企业网站优化 沈阳网站建设 沈阳维修电脑