1.Shell脚本数组操作小结

http://www.jb51.net/article/52382.htm

Linux Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

定义数组

在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:

复制代码 代码如下:
数组名=(值1 值2 ... 值n)

例如:

复制代码
代码如下:
array_name=(value0 value1 value2
value3)
 

或者

复制代码
代码如下:
array_name=(
value0
value1
value2
value3
)

还可以单独定义数组的各个分量:

复制代码
代码如下:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

可以不使用连续的下标,而且下标的范围没有限制。

读取数组

读取数组元素值的一般格式是:

复制代码
代码如下:
${数组名[下标]}

例如:

复制代码
代码如下:
valuen=${array_name[n]}

使用@符号可以获取数组中的所有元素,例如:

复制代码
代码如下:
echo ${array_name[@]}

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

复制代码
代码如下:
#
取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
#
取得数组单个元素的长度
lengthn=${#array_name[n]}

附:shell数组小结

不知道
是什么时候写的东西,整理文档时被考古发现,给那些闲着蛋疼之人,一笑而过吧。如果本文中的错误给您带来所有的精神损失,请找保险公司理陪!当然你可以告诉我
(倾诉)

数组作为一种特殊的数据结构在任何一种编程语言中都有它的一席之地,当然bash
shell也不例外。本文就shell数组来做一个小的总结。
在这里只讨论一维数组的情况,关于多维数组(事实上,你得用一维数组的方法来模拟),不涉及。这里包括数组的复制,计算,删除,替换。

数组的声明:

复制代码
代码如下:
array[key]=value # array[0]=one,array[1]=two

declare -a array # array被当作数组名

array=( value1 value2 value3 ... )

array=( [1]=one [2]=two [3]=three ... )

array="one two three" # echo
${array[0|@|*]},把array变量当作数组来处理,但数组元素只有字符串本身

数组的访问:

复制代码
代码如下:
${array[key]} # ${array[1]}

数组的删除

复制代码
代码如下:
unset array[1] # 删除数组中第一个元素

unset array # 删除整个数组

计算数组的长度:

复制代码
代码如下:
${#array}

${#array[0]} #同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的区别

数组的提取

从尾部开始提取:

复制代码
代码如下:
array=( [0]=one [1]=two [2]=three [3]=four
)
${array[@]:1} # two three
four,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素
${array[@]:0:2} # one
two
${array[@]:1:2} # two three

子串删除

复制代码
代码如下:
[root@localhost dev]# echo
${array[@]:0}
one two three four

[root@localhost dev]# echo ${array[@]#t*e} #
左边开始最短的匹配:"t*e",这将匹配到"thre"
one two e four

[root@localhost dev]# echo ${array[@]##t*e} # 左边开始最长的匹配,这将匹配到"three"

[root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )

[root@localhost dev]# echo ${array[@] %o} # 从字符串的结尾开始最短的匹配
one tw three
four

[root@localhost dev]# echo ${array[@] %%o} # 从字符串的结尾开始最长的匹配
one tw three
four

子串替换

复制代码
代码如下:
[root@localhost dev]# array=( [0]=one [1]=two
[2]=three [3]=four )

第一个匹配到的,会被删除

复制代码
代码如下:
[root@localhost dev]# echo ${array[@]
/o/m}
mne twm three fmur

所有匹配到的,都会被删除

复制代码
代码如下:
[root@localhost dev]# echo ${array[@]
//o/m}
mne twm three fmur

没有指定替换子串,则删除匹配到的子符

复制代码
代码如下:
[root@localhost dev]# echo ${array[@]
//o/}
ne tw three fur

替换字符串前端子串

复制代码
代码如下:
[root@localhost dev]# echo ${array[@]
/#o/k}
kne two three four

替换字符串后端子串

复制代码
代码如下:
[root@localhost dev]# echo ${array[@]
/%o/k}
one twk three four
 
 

2.shell中for循环总结

1、 for((i=1;i<=10;i++));do echo $(expr $i \* 4);done

2、在shell中常用的是 for i in $(seq 10)

3、for i in `ls`

几个不同的方法来实现输出1-100间可以被3整除的数

1.用(())

#!/bin/bash

clear for((i=1;i<100;i++))

for do if((i%3==0))

then

echo $i

continue

fi

done

Linux下循环、选择、顺序操作的更多相关文章

  1. Linux下如何选择文件系统:EXT4、Btrfs 和 XFS

    老实说,人们最不曾思考的问题之一是他们的个人电脑中使用了什么文件系统.Windows 和 Mac OS X 用户更没有理由去考虑,因为对于他们的操作系统,只有一种选择,那就是 NTFS 和 HFS+. ...

  2. Linux下idea选择tomcat server 报错Warning the selected directory is not a valid tomcat home

    这是文件的权限问题,在tomcat的目录下执行以下代码 sudo chmod 777 -R tomcat8/ 然后再去idea中配置即可

  3. linux下的FTP安装及调优

    前言: 在之前交换平台的开发中,FTP的各种操作算是核心功能点. 在FTP的开发中,遇到了不少坑. 如FTP需要设置被动模式,否则10M以上的包可能会上传失败. 如FTP需要设置囚牢模式,否则访问的文 ...

  4. 关于linux下的嵌入式文件系统以及flash文件系统选择

    嵌入式linux下常见的文件系统 • RomFS:只读文件系统,可以放在ROM空间,也 可以在系统的RAM中,嵌入式linux中常用来作 根文件系统 • RamFS:利用VFS自身结构而形成的内存文件 ...

  5. gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)

    cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...

  6. Linux下的几个好用的命令与参数

    将所有文件的编码,转换为UTF-8 find . ! -type d -exec enca -L zh_CN -x UTF-8 {} \; 将指定目录下所有文件权限设定为644 find . ! -t ...

  7. Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍

    一.http_load程序非常小,解压后也不到100Khttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把 ...

  8. Linux下调试程序方法

    您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序.本文描述了几种可以用来调试在 Linux 上运行的程序的方法.我们将回顾四种调试问 ...

  9. Linux下6种优秀的邮件传输代理

    导读 在互联网上,邮件客户端向邮件服务器发送邮件然后将消息路由到正确的目的地(其他客户),其中邮件服务器使用的一个网络应用程序称为邮件传输代理(MTA). 最好的Linux邮件传输代理(MTAs) 邮 ...

随机推荐

  1. hdu acmsteps 2.1.8 Leftmost Digit

    Leftmost Digit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  2. Redis操作+python

    自动化接口测试中需要向redis中插入测试数据: 1. 连接redis: import redisself.r = redis.StrictRedis(host=env.REDIS_HOST, por ...

  3. KVM切换声音关闭

    Scroll Lock 2次+左右键 实现切换 Scroll Lock 2次+"B" 实现声音的开关

  4. linux桌面应用开发之折腾

    1 起因 需要开发一个wifi定位的应用,最先在android下搞,后来因为多网卡的原因要换平台,经历了windows,最终选择用kaili linux.debian系的linux,开发桌面应用怎么办 ...

  5. WAMP 403 Forbidden禁止访问

    WAMP .5修改方法 修改httpd.conf文件 # onlineoffline tag - don't remove Require local To # onlineoffline tag - ...

  6. spring 注解简单使用

    一.通用注解 1.项目结构: 2.新建Person类,注解@Component未指明id,则后期使用spring获取实例对象时使用默认id="person"方式获取或使用类方式获取 ...

  7. java 打包jar文件以在没有安装JDK或JRE的机子上运行

    前言: java号称“一次编译,到处运行”,但这有个前提,那就是你的机子上得安装java环境.对于开发人员或其他一些比较懂计算机的人来说这没什么,但是对于一些不懂计算机的人来说这会很麻烦,他们更希望的 ...

  8. hdu 1241 Oil Deposits(水一发,自我的DFS)

    解题思路: 1. 遍历扫描二维数组,遇到‘@’,结果ans++; 2. 将当前 i,j 位置置为‘*’,将当前‘@’的 i,j 传人到DFS函数中,开始遍历八个方向的字符 如果碰到 '@' 则先将当前 ...

  9. Python socket编程之一:

    soket 编程步骤 # -*- coding: utf-8 -*- ################################################################# ...

  10. photoshop几个基本技巧

    原文地址:http://blog.thmz.com/user1/936/archives/2008/20418.htm 去除文字的几种方法: 1.访印图章工具 2.修补工具 3.修复画笔工具 4.画笔 ...