发布时间:2014-09-05 16:57:38作者:知识屋
Bash数组
1.描述
Bash的数组,其元素的个数没有限制。数组的索引由0开始,但不一定要
连续(可以跳号)。索引也可以算术表达式。bash仅支持一维数组。
1.1 declare
名称:设置变量和属性(可以用来声明一个数组)
用法:
declare [-aAfFilrtux] [-p] [Name[=Value]...]
选项:
-f 显示函数名和函数定义
-F 仅显示函数名
下面是用来设置属性的选项
-a 表示Name为一个索引数组
-A 表示Name为一个关系数组
-i 表述Name为一个整数
-l 将Name的值转换为小写
-u 将Name的值转换为大写
-r 表示Name为一个只读变量
-x 表示Name为输出变量(输出为全局变量)
-t 表示Name具有'trace'属性
使用'+'替代'-'来关闭指定的属性
当用在一个函数内部时,declare等价local
实例:
declare -A myarray #声明一个关系数组myarray
myarray[1]=val1
myarray[item2]=val2
1.2 数组的用法
[1].建立数组
格式:
数组名[索引]=值
......
例:
A[0]=val1
A[1]=val2
A[2]=val3
[2].引用数组的元素值
格式:
${数组名[索引]}
例:
echo ${A[0]}
[3].一次设置一个数组的多个元素的值
格式:
数组名=([索引]=val [索引]=val2 ...)或
数组名=(val1 val2 val3 ...)
实例:
B=(1 2 3 4 5)
B=([0]=1 [1]=2 [2]=3 [3]=4 [4]=5)
[4].一次取出数组的所有元素
格式:
${数组名[@]} (取出的每个元素以空白符隔开)
${数组名[*]} (取出的元素组成一个字符串)
[5].获得数组的元素的个数
格式:
${#数组名[@]} 或 ${#数组名[*]}
[6].取得某个元素的长度
格式:
${#数组名[索引]}
[7].取消数组或数组元素的设置
格式:
unset 数组名
unset 数组名[索引]
或 ${#数组名[*]}
[6].取得某个元素的长度
格式:
${#数组名[索引]}
[7].取消数组或数组元素的设置
格式:
unset 数组名
unset 数组名[索引]
1.3 mapfile
名称:从标准输入中读取到一个索引数组中
用法:
mapfile [-n Count] [-O origin] [-s Count] [-t] [-u FD]
[-C Callback] [-c Quantum] [Array]
描述:
从标准输入中读取并输出到一个数组中,也可以通过指定-u FD来从一个文件中读取
若没指定数组名,则默认为MAPFILE
选项:
-n Count:最多读取Count行,若Count为0则表示读取所有行
-O Origin:数组的索引从Origin开始,默认为0
-s Count:忽略前Count行
-u FD:从指定的文件描述符FD中读取,默认为从标准输入中读取
-t:从读取的每一行后面移除换行符
参数:
Array :指定数组名,默认为MAPFILE
实例:
mapfile myarray < file.txt
#将file.txt的内容保存为数组myarray.数组的每个元素为一行
作者“huangyandong”
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能