- 浏览: 4367140 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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 134266简介之所以能用到这个命令,关键是由于很多命令不支持|管道来 ... -
shell学习笔记5---sed详解(原创)
2013-07-05 08:20 24680Sed简介sed 是一种在线编辑器,它一次处理一行内容。处 ... -
awk处理特殊字符(原创)
2013-06-16 16:44 24085单引号 ( ' ' ) 如果我们想查找的是Susan Go ... -
自动查找oracle视图的基础表(原创)
2013-06-15 19:27 2566近期项目有这么个需求,需要将数据从生产环境导入到开发环境。 ... -
公司用
2013-06-12 22:40 0http://blog.csdn.net/zjc0507/ ... -
shell学习笔记4---awk的执行顺序控制(原创)
2013-06-12 13:51 5653next和getline next语句从输入文件中读取下 ... -
shell学习笔记3---awk的执行过程(原创)
2013-06-12 12:29 4804awk_script的组成1、awk_script可以由一 ... -
shell学习笔记2---awk字符串处理(原创)
2013-06-10 22:11 52854awk内置字符串函数gsub(r,s) 在整个$0中用s替 ... -
linux shell 逻辑运算符、逻辑表达式详解
2012-03-04 11:20 2009shell的逻辑运算符 涉及有以下几种类型,因此只要适当选 ... -
shell实现四则运算简单方法
2012-03-04 10:51 11200在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要 ... -
VIM快捷键中英对照图
2011-09-28 10:31 2171最近找到两张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 4481awk概述awk是一种编程 ... -
停止无用服务脚本stop_service.sh
2011-02-20 21:34 2085主要用于停止桌面版linux一般情况下的不常用服务,读者在使用 ... -
实用脚本之清除日志---clear_log.sh
2011-02-20 21:32 2846一个很使用的清除日志脚本 精简版 #!/bin ... -
Shell学习笔记---date_pratice.sh
2011-02-20 21:27 1247声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的。 ... -
Shell学习笔记---变量的赋值与替换
2011-02-20 21:25 1692声明:本文仅作学习研 ... -
Shell学习笔记---变量赋值与运算(原创)
2011-02-20 21:24 22024声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的。 ... -
Shell学习笔记---重定向输入、输出(原创)
2011-02-20 21:24 2770声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的。 ...
相关推荐
一本深入学习shell脚本艺术的书籍 Mendel Cooper 春敏 杨 - 毅 黄 - 3.9.1 2006年5月26日 这本书假定你没有任何关于脚本或一般程序的编程知识, 但是如果你具备相关的知识, 那么你将很容易就能够达到中...
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell ...
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell...
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...
前 言第1章 如何才能学好Shell编程 / 11.1 为什么要学习Shell编程 / 11.2 学好Shell编程所需的基础知识 / 11.3 如何才能学好Shell编程之“老鸟”经验谈 / 31.4 学完本书后可以达到何种Shell编程高度 / 5第2章...
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 ...
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell...
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell...
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考 目 录 译者序 前言 第一部分 shell 第...
由于我们通过CAT命令已经知道行号了,只需要使用SED,输入一个行号的大概范围,就可以详细的展示上下文的日志内容了。 小技巧 如果公司里没有完善的查看日志的工具,例如ELK。那么借助上面的小工具,也可以简单的...
4 Linux学习技巧 2. Linux系统篇…… 2.1 Linux系统管理… 2.1.1 Linux目录初识 2.1.2 Linux常用命令 2.1.3 Linux用户权限 2.1.4Limx网络配置 3. Linux服务篇 Linux服务部署 3.1.1构建NTP时间服务器 3.1.2构建DHCP...
八、Shell scripts:脚本编程.................28 Core Java学习笔记...........31 第一章 JAVA前言..31 第二章 标识符,关键字,类型........35 第三章 表达式与流控制....................41 第四章 数组............
一本深入学习shell脚本艺术的书籍 Mendel Cooper 春敏 杨 - 毅 黄 - 3.9.1 2006年5月26日 这本书假定你没有任何关于脚本或一般程序的编程知识, 但是如果你具备相关的知识, 那么你将很容易就能够达到中高级的...
MONGODB SHELL MONGODB的数据类型 MONGODB的基本数据类型 MONGODB的数组 MONGODB的文档嵌套 MONGODB的OBJECTID 结束语 第二天:初识增删改 添加文档 删除文档 更新文档-文档更换1 更新文档-文档替换2 更新文档-...