linux shell 数组建立及使用技巧_第1页
linux shell 数组建立及使用技巧_第2页
linux shell 数组建立及使用技巧_第3页
linux shell 数组建立及使用技巧_第4页
linux shell 数组建立及使用技巧_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ echo $a1一对括号表示是数组,数组元素用 “ 空格 ” 符号分割开。2. 数组读取与赋值得到长度:chengmocentos5 $ echo $#a5用 $#数组名 或 * 可以得到数组长度读取:chengmocentos5 $ echo $a23chengmocentos5 $ echo $a*1 2 3 4 5用 $数组名 下标 下标是从 0开始 下标是:*或者 得到整个数组内容赋值 :chengmocentos5 $ a1=100chengmocentos5 $ echo $a*1 100

2、3 4 5chengmocentos5 $ a5=100chengmocentos5 $ echo $a*1 100 3 4 5 100直接通过 数组名 下标 就可以对其进行引用赋值, 如果下标不存在, 自动添加新一个数组元素 删除 :chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ unset achengmocentos5 $ echo $a*chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ unset a1chengmocentos5 $ echo $a*1 3 4 5chengmocentos5 $ e

3、cho $#a*4直接通过:unset 数组 下标 可以清除相应的元素,不带下标,清除整个数据。3. 特殊使用分片 :chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ echo $a:0:31 2 3chengmocentos5 $ echo $a:1:42 3 4 5chengmocentos5 $ c=($a:1:4chengmocentos5 $ echo $#c4chengmocentos5 $ echo $c*2 3 4 5直接通过 $数组名 或 *:起始位置 :长度 切片原先数组,返回是字符串,中间用 “ 空格 ” 分 开,因此如果加上 ”

4、(” ,将得到切片数组,上面例子:c 就是一个新数据。替换 :chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ echo $a/3/1001 2 100 4 5chengmocentos5 $ echo $a1 2 3 4 5chengmocentos5 $ a=($a/3/100chengmocentos5 $ echo $a1 2 100 4 5调用方法是:$数组名 或 */查找字符 /替换字符 该操作不会改变原先数组内容, 如果需要 修改,可以看上面例子,重新定义数据。从上面讲到的,大家可以发现 linux shell 的数组已经很强大了, 常见

5、的操作已经绰绰有余了 linux shell 动态生成 数组系列 seq 使用技巧2010-12-30 16:36:22 阅读 5 评论 0 字号:大中小 订阅如果对 linux shell 数组不是很熟悉的话, 请看上一篇文章:linux shell 数组建立及使用技巧 , 这篇文章主要讲是动态生成数组系列。 方法应该很多, 我这里主要以一个求和计算的题目为 例进行分析。题目:请用 linux shell 写一段脚本,实现从 1.1000中所有偶数的和值。方法一:通过 while 循环得到需要的结果:start=1;total=0;while $start -le 1000 ;do $($s

6、tart%2 = 0 &&total=$($total+$start;start=$($start+1;done;echo $total;chengmocentos5 $ start=1;total=0;while $start -le1000 ;do $($start%2 =0 &&total=$($total+$start; start=$($start+1;done;echo $total; 250500以上运行结果是:249500, 在 linux shell 中, ”;” 作为命令行分隔符。如果大家对于 $( 运 算符号不是很理解,可以查看:linux

7、 shell 实现 四则运算(整数及浮点 简单方法 ,如 果对于: 符号,可以参考另外一篇文章 linux shell 逻辑运算符、逻辑表达式详解 。方法二:通过 for 循环得到结果:start=0;total=0;for i in $(seq $start 2 1000; dototal=$($total+$i;done;echo $total;chengmocentos5 $ start=0;total=0;for i in $(seq $start 2 1000;do total=$($total+$i;done;echo $total;250500上面语句已经代码方面明显优于方法一,

8、而且性能方面表现也很好。下面比较就可以发现:比较性能:chengmocentos5 $ time (start=0;total=0;for i in $(seq $start 2 1000; do total=$($total+$i;done;echo $total; 250500real 0m0.016suser 0m0.012ssys 0m0.003schengmocentos5 $ time (start=1;total=0;while $start -le1000 ;do $($start%2 =0 &&total=$($total+$start; start=$($s

9、tart+1;done;echo $total; 250500real 0m0.073suser 0m0.069ssys 0m0.004s方法一耗时 是方法二的 6倍!seq 使用:seq OPTION. LASTseq OPTION. FIRST LASTseq OPTION. FIRST INCREMENT LASTchengmocentos5 $ seq 1000 起始默认是 1,间隔默认也是 1chengmocentos5 $seq 2 1000 间隔默认是 1chengmocentos5 $seq 1 3 10 ' 从 1开始,到 10 间隔为 3 结果是:1 4 7 10 说明:默认间隔是 “ 空格 ” 如果想换成其它的可以带参数:-schengmocentos5 $seq -s'#' 1 3 101#4#7#10应用技巧:生成连续数组系列:chengmocentos5 $ a=($(seq 1 3 10chengmocentos5 $ echo $a14chengmocento

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论