Linux Shell 数组
shell 数组一般都是一维数组。
1. 数组的声明
declare -a arr
- 该命令将声明一个数组arr,实际上不声明也可以直接定义数组。
2. 数组的初始化
arr=(1 2 3)
:该命令定义了一个数组,可以不指明长度。元素之间用空格隔开。arr=([index1]=val1 [index2]=val2 ... [indexn]=valn)
:利用数组下表定义数组。read -a array
:从命令行中读入数组。
3. 数组信息的获取
${arr[index]}
:读取数组中下标为index
的元素。${arr[@/*]}
:读取arr
的所有元素。@
和*
都是所有的意思。${#arr[@/*]}
:arr
中的元素个数,#代表数目。
4. 数组元素的更新
arr[index]=x
:将下标为index
的数组元素更新为x
,如果index
对应元素不存在,则在相应index
位置添加元素x
。arr=(x y .. z)
:将数组重新定义,覆盖原数组。
5. 数组的删除
unset arr
:删除整个arr
数组。unset arr[index]
:删除arr
中下标为index
的数组元素。
6. 数组切片
${arr[@]:start:end}
:将数组从下标为start
至end
切片,返回值为字符串类型,元素之间以空格符分隔。arr_new="(${arr[@]:start:end})"
:将数组切片后赋给新的数组变量,切片以后对返回字符串左右加上括号即构成了新的数组。
7. 数组元素替换
${arr[@]/原元素x/替换元素y}
:将数组中所有原元素x
替换为替换元素y
,返回一个新的替换后的数组,并不改变原值。arr=${arr[@]/x/y}
:替换元素后覆盖原数组,改变原数组。arr_new=${arr[@]/x/y}
:将修改后的数组赋给一个新数组,原数组内容不变。
8. 数组的遍历操作
for i in "${array[@]}"
do
#access each element as $i. . .
donefor
循环遍历数组。
9. 模拟二维数组
matrix[i][j]=array[n*i+j]
:通过一维数组模拟二维数组,按行顺序存储。
参考博客:
Linux Shell 数组的更多相关文章
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- 转:linux shell 数组建立及使用技巧
linux shell在编程方面比windows 批处理强大太多,无论是在循环.运算.已经数据类型方面都是不能比较的. 下面是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...
- 转载-Linux Shell 数组建立及使用技巧
转载自:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html 如侵犯版权,请联系我删除 linux shell在编程方面比win ...
- linux shell 数组建立及使用技巧
参考网址:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html linux shell在编程方面比windows 批处理强大太多 ...
- linux shell 数组的使用
引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...
- linux shell数组
from: http://www.jb51.net/article/34322.htm bash shell只支持一维数组,但参数个数没有限制. 声明一个数组:declare -a array(其实不 ...
- linux shell数组赋值方法(常用)
http://blog.csdn.net/shaobingj126/article/details/7395161 Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... ...
- Linux shell —— 数组与关联数组
使用 declare -A(declare 的用法请使用 help 进行查看,help declare) 进行声明关联数组变量: $ declare -A fruits_price $ fruits_ ...
- Linux shell之数组
引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...
随机推荐
- 【bzoj1688】[USACO2005 Open]Disease Manangement 疾病管理
题目描述 Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) is running through the farm. Far ...
- 【荐】如何规划 Nginx 网站目录的权限(用户,用户组,ssh,sftp)
从上一篇文章:PHP网站(nginx.php-fpm.mysql) 用户权限解析,可以学习了解到,nginx 和 php-fpm 的用户是如何运作的. 有个工作场景: 1.公司的一台 CentOS 服 ...
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决办法
这个问题的原因是没有导入mysql连接库,我从官网上下载后照着网上的教程各种导入无果,最后发现是我导入的文件错了.... 官网上下下来的压缩文件是这个,不过这并不是直接要导入的文件,首先解压文件,然后 ...
- 服务器通过微信公众号Token验证测试的代码(Python版)
我在阿里云租了一个云服务器,然后想把这个作为我的微信公众号的后台,启用微信公众号开发者需要正确的响应微信服务器的Token验证,为此把这个验证的Python代码贴出来,只要在服务器上运行这段代码,注意 ...
- Android二维码的生成,解析以及扫描功能
<1> 布局只有2个按钮,实现生成二维码和解析二维码 <Button android:layout_width="wrap_content" android:la ...
- Mac挂载NTFS移动硬盘读取VMware虚拟机文件
一.Mac 挂载NTFS移动硬盘进行读写操作 (Read-only file system) 注意如下图所示先卸载,然后按照下图的命令进行挂载.然后cd /opt/003_vm/ &&am ...
- connect-flash 中间件
http://blog.csdn.net/liangklfang/article/details/51086607
- .NetChajian
Code generation(代码自动生成) NVelocity CodeSmith X-Code .NET XGoF - NMatrix / DEVerest Compilation(编译工具) ...
- docker容器与容器云读书笔记1
搭建docker应用栈 操作系统: ubuntu 16.04.1 LTS 桌面版 1. 准备工作 换网易源, gedit 会报一个metadata的告警, 不用理会, sudo apt-get upd ...
- nginx优化
此文章非原创,出自鸟哥之手~ http://blog.chinaunix.net/uid-25266990-id-2985541.html 改排版改得多,当然红色部分要注意下,用得较多 ------- ...