shell编程-数组

本文连接  https://www.jianshu.com/p/8f2e13c5330d

一、数组 (array) 变量

定义和取值

数组中的值: wukong  bajie  shaseng
值的索引号: 0      1     2
负数的索引号: -3     -2    -1

数组的索引只能是 整数

# 定义一个数组
var=(wukong bajie shaseng)

echo ${var[2]} //显示数组中索引号为 2 的值,索引号从 0 开始
输出 shaseng

echo ${var[*]}  //显示数组中所有的值
输出 wukong bajie shaseng

定义数组,并且其值从命令的结果中获取

# 把文件中的每一行作为数组中的一个值
line=(`cat /etc/passwd`)

切片

普通字符串切片

# 获取到 CPU 型号信息,作为基础数据进行处理
[root@shark ~]# cpu=$(grep 'model name' /proc/cpuinfo |uniq|cut -d: -f2)
[root@shark ~]# echo "|$cpu|"
| Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz|
[root@shark ~]# echo ${cpu:1}  # 从索引号 1 开始向后取值,取到最后
Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
[root@shark ~]# cpu=${cpu:1}  
[root@shark ~]# echo "|$cpu|"
|Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz|

数组切片

[root@shark ~]# nums=(a b c d e)
[root@shark ~]# echo ${nums[*]:2}  # 从索引号 2 开始向后取值,取到最后
c d e
[root@shark ~]# echo ${nums[*]:2:2} # # 从索引号 2 开始向后取值,取 2 个
c d
[root@shark ~]#

循环数组

[root@shark ~]# nums=(a b c d e)
[root@shark ~]# for i in ${nums[*]}
> do
>     echo $i
> done
a
b
c
d
e

二、declare 声明关联数组

数组的索引可以是 普通字符串

声明关联数组使用 A 选项

declare -A  数组名称

1. 声明

# 声明关联数组,数组名称为 info
[shark@sharkyun ~]$ declare -A   info

2. 添加值

  • 每次添加一个值,可以追加

示例:

[shark@sharkyun ~]$ info["name"]="shark"
[shark@sharkyun ~]$ info["age"]=18
[shark@sharkyun ~]$ echo ${info["name"]}  # 显示索引对应的值
shark
[shark@sharkyun ~]$ echo ${info["age"]}
18
  • 一次添加所以的值,不可以追加,每次都会覆盖上次的值

每个值之间使用 空格 隔开

var=([key1]="value1" [key2]="value2")

示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWhalANC-1626163535947)(assets/image-20200910101909271.png)]

删除

[root@kube-master arry]# unset info[name]
[root@kube-master arry]# echo ${!info[*]}
age

循环关联数组

[root@shark ~]# echo ${info[@]}
shark 18
[root@shark ~]# for i in ${info[@]}
> do
>   echo $i
> done
shark
18
[root@shark ~]#
上一篇:06 Spark SQL 及其DataFrame的基本操作


下一篇:06 Spark SQL 及其DataFrame的基本操作