- 浏览: 4411313 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
数组的使用
$ a=(1 2 3 4 5)
$ echo $a
1
一对括号表示是数组,数组元素用“空格”符号分割开。
数组读取与赋值
得到长度:
$ echo ${#a[@]}
5
用${#数组名[@或*]} 可以得到数组长度
读取:
$ echo ${a[2]}
3
$ echo ${a[*]}
1 2 3 4 5
用${数组名[下标]} 下标是从0开始 下标是:*或者@ 得到整个数组内容
赋值:
$ a[1]=100
$ echo ${a[*]}
1 100 3 4 5
$ a[5]=100
$ echo ${a[*]}
1 100 3 4 5 100
直接通过数组名[下标] 就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素
删除:
$ a=(1 2 3 4 5)
$ unset a
$ echo ${a[*]}
$ a=(1 2 3 4 5)
$ unset a[1]
$ echo ${a[*]}
1 3 4 5
$ echo ${#a[*]}
4
直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。
特殊使用
分片:
$ a=(1 2 3 4 5)
$ echo ${a[@]:0:3}
1 2 3
$ echo ${a[@]:1:4}
2 3 4 5
$ c=(${a[@]:1:4})
$ echo ${#c[@]}
4
$ echo ${c[*]}
2 3 4 5
直接通过${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,上面例子:c 就是一个新数据。
替换:
$ a=(1 2 3 4 5)
$ echo ${a[@]/3/100}
1 2 100 4 5
$ echo ${a[@]}
1 2 3 4 5
$ a=(${a[@]/3/100})
$ echo ${a[@]}
1 2 100 4 5
调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。
从上面讲到的,大家可以发现linux shell 的数组已经很强大了,常见的操作已经绰绰有余了
这里主要以一个求和计算的题目为,介绍使用seq动态生成数组系列
样例进行分析
题目:请用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
以上运行结果是:250500,在linux shell 中,”;”作为命令行分隔符。如果大家对于$(()) 运算符号不是很理解,可以查看:linux shell 实现四则运算。
http://czmmiao.iteye.com/blog/1439397
也可以参考另外一篇文章linux shell 逻辑运算符、逻辑表达式详解。
http://czmmiao.iteye.com/blog/1439403
方法二:通过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
上面语句已经代码方面明显优于方法一,而且性能方面表现也很好。下面比较性能就可以发现:
[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
$ 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
方法一耗时是方法二的6倍!
seq 使用
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
$seq 1000
‘起始默认是 1,间隔默认也是1
$seq 2 1000
‘间隔默认是1
$seq 1 3 10
'从1开始,到10 间隔为3 结果是:1 4 7 10 说明:默认间隔是
“空格” 如果想换成其它的可以带参数:-s
$seq -s'#' 1 3 10
1#4#7#10
应用技巧:
生成连续数组系列:
$ a=($(seq 1 3 10))
$ echo ${a[1]}
4
$ echo ${a[@]}
1 4 7 10
生成连续相同字符:
$ seq -s '#' 30 | sed -e 's/[0-9]*//g'
#############################
上面例子:通过加入间隔字符‘#’后,替换掉数字, 生成连续相同字符’#’,这个在以后书写中还是有不少帮助。
参考至:http://wenku.baidu.com/view/d5d06b5bbe23482fb4da4c0c.html
如有错误,欢迎指正
邮箱:czmcj@163.com
发表评论
-
Xargs用法详解(原创)
2013-09-29 19:46 134490简介之所以能用到这个命令,关键是由于很多命令不支持|管道来 ... -
shell学习笔记5---sed详解(原创)
2013-07-05 08:20 24898Sed简介sed 是一种在线编辑器,它一次处理一行内容。处 ... -
awk处理特殊字符(原创)
2013-06-16 16:44 24207单引号 ( ' ' ) 如果我们想查找的是Susan Go ... -
自动查找oracle视图的基础表(原创)
2013-06-15 19:27 2627近期项目有这么个需求,需要将数据从生产环境导入到开发环境。 ... -
公司用
2013-06-12 22:40 0http://blog.csdn.net/zjc0507/ ... -
shell学习笔记4---awk的执行顺序控制(原创)
2013-06-12 13:51 5709next和getline next语句从输入文件中读取下 ... -
shell学习笔记3---awk的执行过程(原创)
2013-06-12 12:29 4849awk_script的组成1、awk_script可以由一 ... -
shell学习笔记2---awk字符串处理(原创)
2013-06-10 22:11 52967awk内置字符串函数gsub(r,s) 在整个$0中用s替 ... -
linux shell 逻辑运算符、逻辑表达式详解
2012-03-04 11:20 2061shell的逻辑运算符 涉及有以下几种类型,因此只要适当选 ... -
shell实现四则运算简单方法
2012-03-04 10:51 11249在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要 ... -
VIM快捷键中英对照图
2011-09-28 10:31 2233最近找到两张VIM快捷键的图,一个是英文原版,一个是中文翻 ... -
awk排序去重复
2011-09-26 17:14 0t='t1 t2 t3 t1 t4 t3' echo $t ... -
awk行转列
2011-09-22 19:17 0[root@centos ~]# cat cc a,1 a ... -
shell学习笔记1---awk基础(原创)
2011-03-03 09:55 4524awk概述awk是一种编程 ... -
停止无用服务脚本stop_service.sh
2011-02-20 21:34 2151主要用于停止桌面版linux一般情况下的不常用服务,读者在使用 ... -
实用脚本之清除日志---clear_log.sh
2011-02-20 21:32 2902一个很使用的清除日志脚本 精简版 #!/bin ... -
Shell学习笔记---date_pratice.sh
2011-02-20 21:27 1286声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的。 ... -
Shell学习笔记---变量的赋值与替换
2011-02-20 21:25 1737声明:本文仅作学习研 ... -
Shell学习笔记---变量赋值与运算(原创)
2011-02-20 21:24 22096声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的。 ... -
Shell学习笔记---重定向输入、输出(原创)
2011-02-20 21:24 2820声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的。 ...
相关推荐
与C、C++或Java等编程语言不同,Shell中的数组处理方式有一些特殊的规则和技巧。本文将详细介绍如何在Linux Shell中定义数组以及如何使用`for`循环遍历数组。 ### 数组的定义 在Linux Shell中,定义数组的语法如下...
本文档《Shell学习笔记》详细介绍了Shell脚本编写的基础知识和一些高级技巧,包含了多个主题,例如终端操作、环境变量使用、数学运算、文件描述符、数组和关联数组、别名使用、终端信息获取、日期和时间处理、脚本...
### Shell脚本学习手册知识点概览 #### 一、Shell脚本基础 ...以上是对《shell脚本学习手册》中提到的主要知识点的详细解析,涵盖了从基本概念到具体应用的各种细节,有助于初学者全面理解Shell脚本的编写技巧。
通过这些教程,学习者可以全面了解Shell脚本编程的基础知识,掌握编写高效、可靠的Shell脚本的技巧,从而更好地管理和自动化Linux系统。每个HTML文件都包含了丰富的实例和实践指导,是提升Shell脚本技能的理想资源。
本文将深入探讨shell脚本的基础知识,包括语法、变量、控制结构、函数以及在实际应用中的常见技巧。 一、Shell脚本基础 1. **什么是Shell**:Shell是操作系统提供的一种命令行界面,它允许用户通过输入指令来与...
作为学习Shell脚本的指南,这本书籍旨在帮助读者深入理解Shell脚本语言的原理,掌握编写高效、可维护脚本的技巧。 1. **基础概念** - **Shell**: Shell是用户与操作系统内核之间的接口,它提供了一种命令行界面,...
12. **调试技巧**:使用`set -x`开启命令追踪,`set -v`显示变量赋值,`set -n`检查语法但不执行,帮助调试脚本。 13. **脚本优化**:了解`alias`和`function`的区别,避免使用`eval`,使用命令组合(如`&&`和`||`...
错误处理和调试技巧也是学习的重要环节。了解如何捕获和处理脚本运行时的错误,以及如何利用set命令来开启或关闭脚本的不同执行模式,对于编写健壮的脚本至关重要。 最后,脚本的权限和执行方式也很关键。了解如何...
10. Shell函数和数组:掌握Shell中的数组使用,以及如何在函数中操作数组。 11. 调试和错误处理:学习如何使用set命令进行调试,以及如何处理脚本运行时的错误。 12. 高级话题:探索高级特性,如陷阱(traps)、子...
Shell是Linux和Unix操作系统中的命令解释器,它提供了一个用户...通过深入学习以上知识点,并结合"shell_study"中的教程和实践,你将能够熟练掌握Shell的基本操作和编程技巧,从而更高效地管理和控制Linux或Unix系统。
学习数组、函数的高级用法,以及如何调用外部程序和处理返回值。了解shell脚本调试方法,如set命令的使用,以及利用shopt选项来优化脚本执行。 5. 自学与提高: 居家自学Linux Red Hat和Shell,可以借助在线教程、...
"SHELL编程学习21天"可能是一个教程计划,旨在帮助学习者在21天内掌握Shell脚本编写的基本概念和高级技巧。接下来,我们将深入探讨Shell编程的核心知识点。 **1. Shell介绍** Shell是操作系统提供的一个命令解释器...
5. **调试技巧**:学习使用set命令进行调试,找出脚本中的错误。 最后,`crontab.pdf`文档会讲解Linux的任务调度器`crontab`: 1. **crontab文件结构**:理解每行代表一个定时任务,包括时间字段(分钟、小时、...
**SHELL脚本学习指南** 在信息技术领域,Shell脚本是一种强大的工具,尤其在Linux和Unix系统中,它被广泛用于自动化日常任务、系统管理以及软件部署。本指南将深入探讨Shell脚本的基础和高级概念,帮助你充分利用这...
Linux Shell学习指南是针对Linux操作系统中的命令行接口——Shell,进行深入学习的资源。Shell是用户与Linux内核交互的桥梁,它提供了命令行界面,允许用户通过输入指令执行各种任务。对于初学者来说,掌握Shell编程...
本书《最经典的Unix Shell学习资料》旨在全面深入地介绍Unix系统中的Bash Shell,不仅涵盖了基础概念,还涉及了高级技巧,是一本适用于各水平读者的综合指南。无论您是初学者还是经验丰富的用户,都能从中获取有价值...
Shell是Linux和Unix系统中的...通过这个Shell学习教程,你将能够熟练地使用Shell进行日常操作,编写高效的自动化脚本,进一步提升你在Linux环境中的工作效率。无论你是系统管理员还是开发者,Shell技能都是必不可少的。
学习更高级的Shell技巧,如命令别名、函数、数组、陷阱(trap)和进程控制,可以帮助你更好地定制Shell环境。例如,定义命令别名可以简化常用命令的输入,如`alias ll='ls -l'`。而进程控制(如bg、fg、jobs)则能...
### Linux Shell 脚本学习指南 #### 一、Shell 编程的重要性 在 Linux 系统中,尽管存在各种图形界面工具,但 Shell 仍然是一个极其强大的工具。Shell 不仅仅是一个命令集,还是一种非常实用的编程语言。通过 ...
"免费):Shell脚本学习指南00009.pdf"和"免费):Shell脚本学习指南00001.pdf"可能是同一系列教程的不同章节,它们会提供逐步指导,从基础到高级,涵盖变量、流程控制、数组、函数、错误处理和调试技巧等主题。...