linux中Bash数组操作教程

一、定义数组

1. 使用[]操作符

names[0]='zrong'
names[1]='jacky'

2. 使用()直接赋值

names=('zrong' 'jacky')
# 或
names=([0]='zrong' [1]='jacky')

3. 使用declare -a定义数组。这种方法可以将一个空的变量定义成数组类型。

declare -a names

4. 从文件中读取数组

cat>names.txt
zrong
jacky
sweet
Ctrl+C
# 将每一行读取为数组的一个元素
names=(`cat 'names.txt'`)

二、读取数组

1. 数组取值

和ActionScript一样,Bash也使用[]操作符和基于0的下标来取值:

adobe=('Flash' 'Flex' 'Photoshop')
echo ${adobe[0]}
# 打印
# Flash

2. 数组长度(元素个数)

使用“@”这个特殊的下标,可以将数组扩展成列表,然后就可以使用bash中的获取变量长度的操作符“#”来获取数组中元素的个数了:

adobe=('Flash' 'Flex' 'Photoshop')
echo ${#adobe[@]}
# 打印
# 3

有趣的是,没有定义的数组下标,并不会占用数组中元素的个数:

adobe=([0]='Flash' [2]='Flex' [4]='Photoshop')
echo ${#adobe[@]}
# 打印
# 3

3. 获取数组的一部分

命令替换对数组也是有效的,可以使用偏移操作符来取得数组的一部分:

adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
echo ${adobe[@]:1:3}
# 打印
# Flex Photoshop Dreamweaver
echo ${adobe[@]:3}
# 打印
# Dreamweaver Premiere

4. 连接两个数组

adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
adobe2=('Fireworks' 'Illustrator')
adobe3=(${adobe[@]} ${adobe2[@]})
echo ${#adobe3[@]}
# 打印
# 7

三、修改数组

1. 替换数组元素

模式操作符对数组也是有效的,可以使用它来替换数组中的元素

adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
echo ${adobe[@]/Flash/FlashCS5}
# 打印
# 注意,打印的结果是一个字符串列表,不是数组
# FlashCS5 Flex Photoshop Dreamweaver Premiere
#
# 将替换后的值重新保存成数组
adobe=(${adobe[@]/Flash/FlashCS5})

2. 删除数组元素

使用命令替换并重新赋值的方式删除数组元素

# 删除Photoshop元素
adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
adobe=(${adobe[@]:0:2} ${adobe[@]:3})
echo ${adobe[@]}
# 打印
# Flash Flex Dreamweaver Premiere

使用模式操作符删除数组元素

adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
adobe=(${adobe[@]/Photoshop/})
echo ${adobe[@]}
# 打印
# Flash Flex Dreamweaver Premiere

四、循环

使用for in循环读取数组:

adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
for item in ${adobe[@]};do
    echo $item
done
# 打印
# Flash
# Flex
# Photoshop
# Dreamweaver
# Premiere

使用for循环读取数组:

adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')
len=${#adobe[@]}
for ((i=0;i<$len;i++));do
    echo ${adobe[$i]}
done
# 打印
# Flash
# Flex
# Photoshop
# Dreamweaver
# Premiere

时间: 2024-12-03 01:49:47

linux中Bash数组操作教程的相关文章

linux中Bash数组使用示例

数组赋值 列表赋值 用新元素创建数组 array=('first element' 'second element' 'third element') 下标赋值 显式指定元素索引创建数组: array=([3]='fourth element' [4]='fifth element') 按索引赋值 array[0]='first element' array[1]='second element' 按名称赋值(关联数组) declare -A array array[first]='First

Linux中RPM文件操作的常用命令总结_Linux

简介 众所周知在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的"添加/删除程序",但是功能又比"添加/删除程序"强很多,它就是Red Hat Package Manager(简称RPM).本文介绍的就是关于Linux中RPM文件操作的常用命令,下面话不多说,来一起看看吧. 一.RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rpm 包: rpm -iv e

有关数组定义-关于linux中的数组问题 求各位解答

问题描述 关于linux中的数组问题 求各位解答 有点搞不明白 空数组和空字符数组两个的区别 也就是说 array1=()和array2=("")这两个定义的数组的区别是什么... 解决方案 空数组是软数组int a(0) 小括号是方括号. 没有分配空间,而字符空数组会以结尾会占一个空间.你可以自行测试一下 解决方案二: 一个是空的字符串,一个是null 解决方案三: int array={};是普通数组声明 char array="";是字符串数组声明 解决方案四

linux系统中bash漏洞修复教程

天一打开电脑,就发现群里再说bash漏洞的事情,马上搜了下,发现居然比心血漏洞还要严重,好吧,看来今天又有事情要做了.    系统:centos5.x 1.检测你服务器是否需要修复 env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 如果输出是vulnerable就要升级bash了. 2.升级bash yum -y update bash 如果是centos6的服务器,yum完后请先执行/sbin/ldconf

linux中git服务器搭配教程

例子一 先看疗效: 1. 无需公钥 2. 只需要几个最常用的Linux命令就可以搭建   看步骤 1. 准备Linux服务器, 安装好git(一般都是默认装好的) 2. 命令行操作 useradd git   #创建一个git账号 passwd git    #设置git账号的密码 su – git    #切换到git账号 cd ~  #转到用户目录 mkdir 项目名称.git   #建立项目git文件夹 cd 项目名称.git git –-bare –share init   #初始化gi

linux中bash: service: command not found 错误

  今天在进行linux操作的时候,要对vsftpd服务进行重启,使用service vsftpd restart,此时报了一个难以让人相信的错误: bash: service: command not found 于是我到网上去一搜了一下,解决方法其实挺简单的,使用su切换到root账号的时候前加一个"-"即: su - root 进入root账号后再使用 service vsftpd restart 问题解决了! 后来我去网上找了些出现这个错误的原因: service命令是要用RO

word2010中插入电子表格操作教程

在使用Word2010制作和编辑表格时,可以直接插入Excel电子表格,并且插入的电子表格也具有数据运算等功能.或者粘贴Excel电子表格,表格不具有Excel电子表格的计算功能.本篇经验介绍一下插入或粘贴Excel电子表格的方法. 一.插入Excel电子表格 打开Word2010文档,单击"插入"选项卡. 在"表格"中单击"表格"按钮. 在菜单中选择"Excel电子表格"命令. 在Excel电子表格中输入数据并进行计算排序等

linux中Kickstart自动化安装教程

在 RHEL,CentOS,Fedora 等系统中,安装系统使用的程序名叫 anaconda,它属于 FedoraProject,由 Python 开发,能够提供图形或者文本界面用于系统安装. Anaconda 安装程序最大的优点是:它可以用一个称之为 Kickstart 的特性进行非交互式脚本安装.Kickstart 脚本是一个用来指定安装要求详情的简单 ASCII 文本文件.该脚本可用常规文本编辑器编写,或用 Kickstart 配置程序来生成. Kickstart 脚本通常有三个不同的部分

Linux 中PHP的安装教程_Linux

一.下载安装包 http://www.php.net/downloads.php 获取下载地址 wget http://hk1.php.net/distributions/php-7.0.13.tar.gz http://xmlsoft.org ftp://xmlsoft.org/libxml2/libxml2-2.9.4.tar.gz 二.安装python-devel centos安装 python-dev包提示No package python-dev available: 出现此问题的原因