Linux Shell编程笔记10 Shell数组的补充
数组可以通过下标或值进行索引,如果不存在,则值为空。比如:
#!/bin/bash
arr[0]=hello
echo ${arr[1]} # 输出空内容
使用@
输出所有数组的内容,使用#
和@
输出元素的个数
#!/bin/bash
arr[0]=hello
arr[1]=world
echo ${arr[@]}
echo ${#arr[@]}
echo ${#arr[0]}
echo ${arr} # 也是第一个元素的长度
输出结果:
hello world
2
5
5
可以通过位移和长度的模式来访问数组的元素:
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
echo ${Unix[@]:3:2}
echo ${Unix[0]:0:2}
输出:
Suse Fedora
De
@
表示所有的数组成员,3
表示从第3
个开始(注意第一个从0开始),2
表示包括第3
个在内往后的2个元素,这里相当于是3,4个元素;也可以像最后一行那样输出指定位置元素的指定个数。
数组的元素可以通过正则式进行匹配查找和替换:
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
echo ${Unix[@]/Ubuntu/SCO Unix}
输出SCO Unix
,但是这只是暂时的替换,原来数组的元素基本不变。想要永久替换,需要使用下标或者索引进行赋值,比如:
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Unix[3]='SCO Linux'
Unix[Debian]=Arch
echo ${Unix[@]}
输出结果:
Arch Red hat SCO Suse Fedora UTS OpenLinux
向数组中添加现有的元素,可以通过如下的方式
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Unix=("${Unix[@]}" "Arch" "Antergos")
echo ${Unix[@]}
删除存在的元素,可以通过以下两种方式。第一个是删除元素,但是没有删除元素占用的空间:
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
unset Unix[3]
第二种是彻底删除,并删除所在的空间:
c
pos=3
Unix=(${Unix[@]:0:$pos} ${Unix[@]:(($pos+1))})
echo ${Unix[@]}
通过正则式来删除元素。本质上是一种替换,把已知元素替换成空。这种方式没有删除所在的空间。
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
echo ${Unix[@]/Red*/}
如果删除整个数组,直接对数组 进行unset
操作即可。
unset Unix
数组的整体赋值:
Linux=("${Unix[@]}")
连接两个数组:
OS=("${Unix[@]}" "${Windows[@]}")
如果从文件内容创建数组,则直接使用cat
:
Unix=(`cat "./file"`)
注意这种方式,默认的最小分隔符是空格!!!!
Linux Shell编程笔记10 Shell数组的补充相关推荐
- 小苏的Shell编程笔记之六--Shell中的函数
http://xiaosu.blog.51cto.com/2914416/531247 Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以 ...
- 小苏的Shell编程笔记之五--Shell的控制结构
任何编程语言都有控制结构,Shell也不例外,这些也是需要牢记的. 1. if 结构 最简单的判断形式就是if结构.语法为: if 表达式 then 命令行 {else 命令行} fi 当然,if ...
- Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)
shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...
- 史上最牛最强的linux学习笔记 10.shell基础
史上最牛最强的linux学习笔记 10.shell基础 写在最前面: 本文是基于某站的视频学习所得,第一个链接如下: https://www.bilibili.com/video/BV1mW411i7 ...
- Linux系统编程笔记(李慧琴) 2
Linux系统编程笔记(李慧琴) 02系统IO介绍 02系统IO介绍 I/O:input & output, 是一切实现的基础,主要分为 stdio 标准IO (所有的标准都是为了和稀泥整合不 ...
- linux+shell+func,Linux shell编程笔记总结
Linux Shell学习笔记简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称.shell是用户和Linux内核之间的接 ...
- Linux 命令行与shell编程 第10章 构建基本脚本
本章内容 构建基本脚本 使用多个命令 创建shell脚本文件 现在我们已经介绍了Linux系统和命令行的基础知识,可以开始编程了.本章讨论编写shell脚本的基础知识.在开始编写自己的shell脚本大 ...
- 【linux】shell 编程之字符串与数组
前言 对字符串的操作在众多的编程语言中可以说是最基础的了,字符串(String)就是一系列字符的组合.字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了). 一.sh ...
- linux系列之-—01 shell编程笔记
一.特殊变量($0.$1.$2. $?. $# .$@. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的 ...
最新文章
- css3的3d起步——分享
- linux 系统打造man中文帮助手册图解
- 记录今天学习SQL遇到的一个小问题
- Oracle中修改遇到“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”
- idhttp.post方式 调用datasnap rest 远程方法(转咏南兄)
- shell学习之awk或gawk
- 批处理批量更改文件名并排序
- java程序的开发流程
- 编程珠玑续版-chp2 关联数组-awk
- Google退出中国 Mark
- 如何利用Grasshopper中的C#制作一个简单的Tekla18.1直梁创建电池
- Saved Blogs
- 推荐收藏 | 常用图片处理网站合集(8个网站)
- 利用HomeTabModeHelper2分钟快速搭建Tab+Fragment主页框架
- SysML Design Principles
- WCF双工通信单工通信
- MQ-2烟雾传感器解析
- 苹果vs剪辑下载_苹果自带APP到底有多好用?这六款你真的要用起来
- 数字货币 永续合约(期货) 相关知识点、计算
- php转nodejs 代码,NodeJS实现视频转码的示例代码
热门文章
- log4j2 mysql_[简单]log4jdbc-log4j2配置简记
- hnu 暑期实训之7还是7 to_string的实现方法
- Python界面程序实例:按钮漂移,用Python小套路来撩女神
- Tomcat启动乱码及IDEA中tomcat信息乱码解决方法
- 调试远程服务器上的代码时报错:调试设置中的Python路径无效
- 数据结构实验 2.连续整数之和(2012年北航研究生入学考试)
- 模块化思想——粤嵌GEC6818读取图片宽度、高度、色深
- c/c++教程 - 总集1. c基础语法
- 用C语言编写链式存储的线性表(含代码实现)
- 学生信息管理系统问题集锦(二)