• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Shell动态生成数组的多种方法

Shell动态生成数组的多种方法

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了shell for in数组,shell 二维数组,shell 数组,shell脚本数组,shell数组遍历等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

如果对linux shell 数组不是很熟悉的话,请看上一篇文章:linux shell 数组建立及使用技巧  ,这篇文章主要讲是动态生成数组系列。方法应该很多,我这里主要以一个求和计算的题目为例进行分析。

 

题目:请用linux shell 写一段脚本,实现从1..1000中所有偶数的和值。

 

方法一:

通过while 循环得到需要的结果:

start=1;

total=0;

while [ $start -le 1000 ];do

  [[ $(($start%2)) == 0 ]]&&total=$(($total+$start));

  start=$(($start+1));

done;

echo $total;

 

[chengmo@centos5 ~]$ start=1;total=0;while [ $start -le 1000 ];do  [[ $(($start%2)) == 0 ]]&&total=$(($total+$start));  start=$(($start+1));done;echo $total;
250500

</div>

以上运行结果是:249500,在linux shell 中,”;”作为命令行分隔符。如果大家对于$(()) 运算符号不是很理解,可以查看:linux shell 实现 四则运算(整数及浮点) 简单方法  ,如果对于:[[]] [] 符号,可以参考另外一篇文章linux shell 逻辑运算符、逻辑表达式详解。


方法二:

通过 for 循环得到结果:

start=0;

total=0;

for i in $(seq $start 2 1000); do

  total=$(($total+$i));

done;

echo $total;

[chengmo@centos5 ~]$ start=0;total=0;for i in $(seq $start 2 1000); do  total=$(($total+$i));done;echo $total;    
250500

</div>

 

上面语句已经代码方面明显优于方法一,而且性能方面表现也很好。下面比较就可以发现:

 

 

比较性能:

[chengmo@centos5 ~]$ time (start=0;total=0;for i in $(seq $start 2 1000); do  total=$(($total+$i));done;echo $total;)       250500

real  0m0.016s
user  0m0.012s
sys   0m0.003s
[chengmo@centos5 ~]$ time (start=1;total=0;while [ $start -le 1000 ];do  [[ $(($start%2)) == 0 ]]&&total=$(($total+$start));  start=$(($start+1));done;echo $total;) 
250500

real  0m0.073s
user  0m0.069s
sys   0m0.004s

</div>

方法一耗时 是方法二的 6倍!


seq 使用:

seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST

[chengmo@centos5 ~]$ seq 1000  ‘起始默认是 1,间隔默认也是1

[chengmo@centos5 ~]$seq 2 1000 ‘间隔默认是1

[chengmo@centos5 ~]$seq 1 3 10  '从1开始,到10 间隔为3 结果是:1 4 7 10

说明:默认间隔是“空格” 如果想换成其它的可以带参数:-s

[chengmo@centos5 ~]$seq -s'#' 1 3 10

1#4#7#10
</div>

 

应用技巧:

 
生成连续数组系列:

 

[chengmo@centos5 ~]$ a=($(seq 1 3 10))  
[chengmo@centos5 ~]$ echo ${a[1]}
4
[chengmo@centos5 ~]$ echo ${a[@]}
1 4 7 10
</div>

 
生成连续相同字符:

[chengmo@centos5 ~]$ seq -s '#' 30 | sed -e 's/[0-9]*//g'
#############################
</div>

上面例子:通过加入间隔字符‘#'后,替换掉数字, 生成连续相同字符'#',这个在以后书写中还是有不少帮助。

</div>

您可能想查找下面的文章:

  • Shell动态生成数组的多种方法
  • shell中的数组操作小结和冒泡排序实现脚本分享
  • shell for循环与数组应用介绍

相关文章

  • 对用户输入的判断的shell实现代码
  • Shell脚本批量重命名文件后缀的3种实现
  • Shell脚本批量清除Nginx缓存
  • Linux 中的nc命令小结
  • 在Shell中分割字符串的例子
  • Shell编程指南
  • Shell使用Epoch进行日期时间转换和计算的几个小函数
  • Linux下如何安装Run文件格式NVIDIA显卡驱动
  • 验证用户输入的参数合法性的shell脚本
  • linux下部署kodexplorer的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Linux下交互式与非交互式修改用户密码的例子
    • Shell脚本搭建FTP服务器(vsftpd)
    • Linux下使用shell脚本自动执行脚本文件
    • shell命令行参数用法简介
    • 详解 linux mysqldump 导出数据库、数据、表结构
    • Shell脚本实现查找字符串中某字符最后出现的位置
    • bash批量重命名、批量更改后辍的方法
    • Shell脚本监控网站页面正常打开情况
    • shell脚本实现ssh自动登录功能分享
    • linux BASH shell下设置字体及背景颜色

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有