Linux数组及一些其他应用
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-04
数组能够实现在内存中划分出一段连续空间来存储相同类型的变量的值,声明一个数组用declare -a FILE这表示FILE是一个数组declare -i I 表面把I声明成一个变量,并且是一个整形变量,如果不加-i的话默认是声明字符串的数组也可以不用声明,直接进行初始化并使用FILE=(e1 e2 e3)这表明有一个数组叫FILE,里面有三个元素,当我们引用e1的时候,要使用下标0,表示引用第一个元素,FILE[0]=e1 FILE[1]=e2例FILE=(e1 e2 e3)echo $FILE 结果e1echo ${FILE[0]} 结果e1echo ${FILE[1]} 结果e2echo ${FILE[@]} 结果e1 e2 e3echo ${FILE[*]} 结果e1 e2 e3echo ${#FILE[*]} 结果是3,表示数组中有几个元素#还有别的用处,如果是一个变量的话例如FILE=''/etc/sysconfig/network''echo $[#FILENAME] 结果是22,显示的是变量的字符串的长度 我们系统里有一个变量叫$RANDOM ,用echo $RANDOM可以出现一个随机数我们可以做这样一个例子,在五个学生中随机挑选一个学生先声明STU=(A B C D E)echo $[$RANDOM%5] 可以得到大于等于0小于5的随机数 ,把取得的值放到STU里当下标就可以取一个同学了INDEX=$[$RANDOM%5] 得到0到5的一个随机数echo ${STU[$INDEX]} 输出A到E的一个随机同学 例,赋10个随机数给一个数组for I in {0..9};do let NUM[$I]=$RANDOM; done 赋值for I in {0..9};do echo ${NUM[$I]};done 显示出来如果要对这10个随机数排序呢?使用如下脚本可以实现从小到大的排序#!/bin/bashfor I in {0..9};do let NUM[$I]=$RANDOM;donefor I in {0..9};do echo ${NUM[$I]};doneecho "NOW Beginning"for I in {0..9}; dolet N=$I 1 for M in `seq $N 9`;do if [ ${NUM[$I]} -gt ${NUM[$M]} ]; then c=${NUM[$I]} NUM[$I]=${NUM[$M]} NUM[$M]=$c fidoneecho ${NUM[$I]} done 如果我们要到一个字符串中取子串的话例FILENAME=''/var/spool/mail''echo ${FILENAME:4}表示从第几个数字开始取后面的部分,得到/spool/mail如果我们只想取出来spool的话那么echo ${FILENAME:5:5}表示从第五个取,取的长度为5 拥有帝国一切,皆有可能。欢迎访问phome.net 我们也可以通过echo $FILENAME |sed ''s@(.*)/[[:alnum:]]{1,}@1@g''得到/var/spool echo ${parameter#*word} 以word为分隔符,从左至右,取第一个分隔符右侧的内容echo ${parameter##*word} 以word为分隔符,从左至右,取一个分隔符右侧的内容echo ${parameter%word*} 以word为分隔符, 从右至左,取第一个分隔符左侧内容echo ${parameter%%word*} 以word为分隔符,从右至左,取一个分隔符左侧内容 parameter是变量名根据上面的例子例echo ${FILENAME##*/} 得到mail 本文出自 “Linux学习” 博客,请务必保留此出处http://296237168.blog.51cto.com/2789451/569651 拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: linux shell编程中的循环判断语句下一篇: linux下双网卡配置
关于Linux数组及一些其他应用的所有评论