前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Linux]shell基础教程3-数组

[Linux]shell基础教程3-数组

作者头像
祥知道
发布2020-03-10 15:56:15
5910
发布2020-03-10 15:56:15
举报
文章被收录于专栏:祥的专栏祥的专栏

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:https://cloud.tencent.com/developer/article/1596383


文章目录

代码语言:txt
复制
- @[toc]环境

环境

  • ubuntu 16.04
  • GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

1. Shell数组定义

在之前的 shell基础教程1-变量、字符串、数组、注释 已经写过了,现在这个增加一些例子。

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小

数组元素下标0开始。

Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:

代码语言:javascript
复制
# 方式1:定义数组:
array_name=(value1 ... valuen)
# 方式2:也可以使用下标来定义数组:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

2. 读取数组

读取数组元素值的一般格式是:

代码语言:javascript
复制
${array_name[index]}

例子:

代码语言:javascript
复制
#!/bin/bash
# author:Q
# url:http://blog.csdn.net/humanking7/

# 第1种定义方式
my_arr_1=(A B "C")
# 第2种定义方式
my_arr_2[0]=1
my_arr_2[1]=2
my_arr_2[2]=3

echo "========================"
echo "显示第1个数组 my_arr_1 元素:"
echo "第1个元素为: ${my_arr_1[0]}"
echo "第2个元素为: ${my_arr_1[1]}"
echo "第3个元素为: ${my_arr_1[2]}"

echo "========================"
echo "显示第2个数组 my_arr_2 元素:"
echo "第1个元素为: ${my_arr_2[0]}"
echo "第2个元素为: ${my_arr_2[1]}"
echo "第3个元素为: ${my_arr_2[2]}"

执行效果:

代码语言:javascript
复制
root@vultr:~# ./t2.sh 
========================
显示第1个数组 my_arr_1 元素:
第1个元素为: A
第2个元素为: B
第3个元素为: C
========================
显示第2个数组 my_arr_2 元素:
第1个元素为: 1
第2个元素为: 2
第3个元素为: 3

3. 获取数组中的所有元素

使用@* 可以获取数组中的所有元素

例子:

代码语言:javascript
复制
#!/bin/bash
# author:Q
# url:http://blog.csdn.net/humanking7/

# 第1种定义方式
my_arr_1=(A B "C")
# 第2种定义方式
my_arr_2[0]=1
my_arr_2[1]=2
my_arr_2[2]=3

echo "========================"
echo "显示第1个数组 my_arr_1 元素:"
echo "第1个元素为: ${my_arr_1[0]}"
echo "第2个元素为: ${my_arr_1[1]}"
echo "第3个元素为: ${my_arr_1[2]}"

echo "========================"
echo "显示第2个数组 my_arr_2 元素:"
echo "第1个元素为: ${my_arr_2[0]}"
echo "第2个元素为: ${my_arr_2[1]}"
echo "第3个元素为: ${my_arr_2[2]}"


echo "========================"
echo "数组1的元素为: ${my_arr_1[*]}"
echo "数组2的元素为: ${my_arr_2[@]}"

执行效果:

代码语言:javascript
复制
root@vultr:~# ./t2.sh 
========================
显示第1个数组 my_arr_1 元素:
第1个元素为: A
第2个元素为: B
第3个元素为: C
========================
显示第2个数组 my_arr_2 元素:
第1个元素为: 1
第2个元素为: 2
第3个元素为: 3
========================
数组1的元素为: A B C
数组2的元素为: 1 2 3

4. 获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同。

代码语言:javascript
复制
${#array_name[*]}
# 或者
${#array_name[@]}

例子:

代码语言:javascript
复制
#!/bin/bash
# author:Q
# url:http://blog.csdn.net/humanking7/

my_arr_1=(A B "C")
# 第2种定义方式
my_arr_2[0]=1
my_arr_2[1]=2
my_arr_2[2]=3
my_arr_2[4]=5
# 注意,没有my_arr_2[3]

echo "========================"
echo "显示第1个数组 my_arr_1 元素:"
echo "第1个元素为: ${my_arr_1[0]}"
echo "第2个元素为: ${my_arr_1[1]}"
echo "第3个元素为: ${my_arr_1[2]}"

echo "========================"
echo "显示第2个数组 my_arr_2 元素:"
echo "第1个元素为: ${my_arr_2[0]}"
echo "第2个元素为: ${my_arr_2[1]}"
echo "第3个元素为: ${my_arr_2[2]}"
echo "第4个元素为: ${my_arr_2[3]}"
echo "第5个元素为: ${my_arr_2[4]}"


echo "========================"
echo "数组1的元素为: ${my_arr_1[*]}"
echo "数组2的元素为: ${my_arr_2[@]}"

echo "========================"
echo "数组1的元素个数为: ${#my_arr_1[*]}"
echo "数组2的元素个数为: ${#my_arr_2[@]}"

执行效果:

代码语言:javascript
复制
root@vultr:~# ./t2.sh 
========================
显示第1个数组 my_arr_1 元素:
第1个元素为: A
第2个元素为: B
第3个元素为: C
========================
显示第2个数组 my_arr_2 元素:
第1个元素为: 1
第2个元素为: 2
第3个元素为: 3
第4个元素为: 
第5个元素为: 5
========================
数组1的元素为: A B C
数组2的元素为: 1 2 3 5
========================
数组1的元素个数为: 3
数组2的元素个数为: 4

注意:

上面的例子(第1个定义的数组,my_arr_2),下标已经到了4,理论上应该有5个元素,但是实际上只有4个元素

参考文献1

5. 参考文献:

  1. http://www.runoob.com/linux/linux-shell-array.html

OK!

以上,Enjoy~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 环境
  • 1. Shell数组定义
  • 2. 读取数组
  • 3. 获取数组中的所有元素
  • 4. 获取数组的长度
  • 5. 参考文献:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档