shell脚本(6)-shell数组
一、数组介绍
一个变量只能存一个值,现实中很多值需要存储,可以定义数组来存储一类的值。
二、基本数组
1、概念:
数组可以让用户一次性赋予多个值,需要读取数据时只需通过索引调用就可以方便读出。
2、数组语法
数组名称=(元素1 元素2 元素3)
[root@localhost test20210725]# list1=(1 2 3 4 5)
[root@localhost test20210725]# list2=('a' 'b' 'c' 'd')
3、数组读出
${数组名称[索引]}
索引默认是元素在数组中的排队编号,默认第一个从0开始
[root@localhost test20210725]# list1=(1 2 3 4 5)
[root@localhost test20210725]# list2=('a' 'b' 'c' 'd')
[root@localhost test20210725]# echo ${list1[0]}
1
[root@localhost test20210725]# echo ${list2[2]}
c
4、数组赋值
[root@localhost test20210725]# list1=(1 2 3 4 5)
[root@localhost test20210725]# list1[0]='1a'
[root@localhost test20210725]# echo ${list1[0]}
1a
5、查看声明过的数组
[root@localhost test20210725]# declare -a
declare -a BASH_ARGC='()'
declare -a BASH_ARGV='()'
declare -a BASH_LINENO='()'
declare -a BASH_SOURCE='()'
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -a DIRSTACK='()'
declare -a FUNCNAME='()'
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="127")'
declare -a list1='([0]="1a" [1]="2" [2]="3" [3]="4" [4]="5")'
declare -a list2='([0]="a" [1]="b" [2]="c" [3]="d")'
6、访问数组元素
[root@localhost test20210725]# list1=(1 2 3 4 5 6 7 8 9 0)
[root@localhost test20210725]# echo ${list1[0]} #访问数组中第一个元素
1
[root@localhost test20210725]# echo ${list1[@]} #访问数组中所有元素,@等同于*
1 2 3 4 5 6 7 8 9 0
[root@localhost test20210725]# echo ${list1[*]}
1 2 3 4 5 6 7 8 9 0
[root@localhost test20210725]# echo ${#list1[@]} #统计数组中元素个数
10
[root@localhost test20210725]# echo ${!list1[@]} #统计数组元素的索引
0 1 2 3 4 5 6 7 8 9
[root@localhost test20210725]# echo ${list1[@]:1} #从数组下标1开始
2 3 4 5 6 7 8 9 0
[root@localhost test20210725]# echo ${list1[@]:1:3} #从数组下标1开始,访问3个元素
2 3 4
7、遍历数组
(1)默认数组通过数组元素的个数进行遍历
vim list_for.sh
#!/bin/bash list="rootfs usr data data2"
for i in $list;
do
echo $i is appoint ;
done
查看运行结果:
[root@localhost test20210725]# sh list_for.sh
rootfs is appoint
usr is appoint
data is appoint
data2 is appoint
三、关联数组
1、概念:
关联数组可以允许用户自定义数组的索引,这样使用起来更加方便、高效
2、定义关联数组:
[root@localhost test20210725]# declare -A acc_array1 #声明一个关联数组
3、关联数组赋值:
[root@localhost test20210725]# declare -A acc_array1 #声明一个关联数组
[root@localhost test20210725]# acc_array1=([name]='mrwhite' [age]=18) #赋值
4、关联数组查询:
[root@localhost test20210725]# declare -A acc_array1 #声明一个关联数组
[root@localhost test20210725]# acc_array1=([name]='mrwhite' [age]=18) #赋值
[root@localhost test20210725]# echo ${acc_array1[name]}
mrwhite
5、关联数组的遍历:
[root@localhost test20210725]# vim ass_list_for.sh #!/usr/bin/bash
#################################
# Author: Mr.white #
# Create_Date: 2021-07-03 19:09:56 #
# Version: 1.0 #
#################################
declare -A acc_list
acc_list=([name]='mrwhite' [age]=18)
echo "数组acc_list的key value为:"
for key in ${!acc_list[@]}
do
#根据key取值
echo "$key <-> ${acc_list[${key}]}"
done
查询运行结果:
[root@localhost test20210725]# sh ass_list_for.sh
数组acc_list的key value为:
name <-> mrwhite
age <-> 18
shell脚本(6)-shell数组的更多相关文章
- SHELL脚本编程-普通数组(列表)和关联数组(字典)
SHELL脚本编程-普通数组(列表)和关联数组(字典) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组相关概述 变量: 存储单个元素的内存空间 数组: 存储多个元素的连续的 ...
- shell脚本学习—Shell执行脚本
Shell作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行这一条,这种方式称为交互式,但还有另一种执行命令的方式称为批处理方式,用户事先写一个Shell脚本,Shell可以一次把这些命 ...
- 如何在shell脚本中导出数组供子进程使用
功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改或删除环境变量 ...
- shell脚本--变量与数组
Linux中的变量有环境变量和用户自定义变量,关于环境变量,可以查看这篇博客:linux环境变量 本文主要针对的是用户在shell脚本中定义的变量,但是环境变量也可以在shell脚本中使用. 普通变量 ...
- shell脚本函数与数组
前言 之前写过一篇关于shell脚本流程控制总结,这次继续写关于shell脚本的问题.本篇文章主要包含shell脚本中的函数以及数组的用法介绍.同时也涵盖了一些字符串处理以及shell脚本比较使用的小 ...
- shell脚本函数及数组
函数介绍: 函数function是由若干条shell命令组成的语句块,实现代码重用和模块话编程. 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部 ...
- 【shell脚本】shell脚本实现的 函数差集查找
文本地址 点击关注微信公众号 wenyuqinghuai 分享提纲: 1. 问题背景 2. 代码实现 1.问题背景 在做公司的测试的自动化测试时,覆盖了一些开发代码的函数,但是那些还没有做,使用一个函 ...
- Shell脚本、Shell脚本结构、date命令的用法、变量
1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构: #!/bin/bash 以#!/bin/bash开头,即以/bin/ba ...
- gitlab webhook php exec 调用 shell 脚本。shell 脚本中调用 git pull 命令无法执行。
情况如下: 我在ubuntu server 14.04 上面安装了gitlab,来托管项目代码.然后想通过gitlab的web hook 功能来做测试服务器代码自动化更新代码功能.现在遇到一个问题:就 ...
- [Android]Recovery调用外部Shell脚本,Shell脚本使用ui_print方法
busybox_bin=/sbin/busybox # 获取PIPE get_outfd(){ | $busybox_bin grep -q 'pipe'; then else local all_p ...
随机推荐
- OpenCV读写视频文件解析(二)
OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...
- JS设置GridView中的RadioButton只能选中一个
//JS&JQuery $(document).ready(function () { //点击跳转链接返回浏览器历史的上一个页面 $("#btnBack").click( ...
- MySQL笔记04(黑马)
今日内容 多表查询 事务 DCL 多表查询 * 查询语法: select 列名列表 from 表名列表 where.... * 准备sql # 创建部门表 CREATE TABLE dept( id ...
- NX二次开发-创建(临时)坐标系
函数:UF_CSYS_create_csys() . UF_CSYS_create_temp_csys() 函数说明:创建坐标系 .创建临时坐标系 用法: #include <uf.h> ...
- [Azure DevOps] 如何使用任务组
1. 使用 PowerShell 脚本 在上一篇文章中我们学会了怎么使用扩展在编译前实时更改版本号.有些情况下我们希望不适用扩展,例如喜欢发明轮子,或者根本没有安装扩展的权限.这时候我们可以自己写 P ...
- 回顾Games101图形学(一)几何变换中一些公式的推导
回顾Games101 chatper1 - 6 前言 本文只写回顾后重新加深认识的知识 透视除法的意义 经过MVP矩阵之后,将模型空间下某点的坐标,转换成了裁剪空间下的坐标,此时因为裁剪空间的范围是x ...
- matplotlib 并列条形图
1 绘制并列条形图,并在条形图上加标注 1.1 代码 from matplotlib import pyplot from matplotlib import font_manager import ...
- 什么是WAF?
1.什么是Web Application Firewall(WAF)? WAF或Web Application Firewall通过过滤和监控Web应用程序与Internet之间的HTTP流量来帮助保 ...
- Centos ulimit设置
1.三处配置 1. 系统编译时默认设置文件(centos7新增) 服务配置 /etc/systemd/system.conf 用户配置 /etc/systemd/user.conf 2. PAM模块配 ...
- layui 列合并相同内容
table.render({ elem: '#tbdata', method: 'post', data: jsonData, height: temphei, limit: 20, limits: ...