我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux shell数组深入学习理解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

linux shell数组深入学习理解

bash shell只支持一维数组,但参数个数没有限制。

声明一个数组:
declare -a array
(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组)

数组赋值:
(1) array=(var1 var2 var3 ... varN)
(2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)
(3) array[0]=var1
arrya[1]=var2
...
array[n]=varN

计算数组元素个数:
${#array[@]} 或者 ${#array[*]}

BASH的特殊参数 @ 和 * 都表示“扩展位置参数,从1开始”,但形式稍有差异,但在数组里使用好像是可以通用的。

引用数组:


echo ${array[n]}

遍历数组:


filename=(`ls`)
for var in ${filename[@]};do
echo $var
done

下面为大家介绍一些shell数组的小例子。

1、从“标准输入”读入n次字符串,每次输入的字符串保存在数组array里


#!/bin/bash
i=0
n=5
while [ "$i" -lt $n ] ; do
echo "Please input strings ... `expr $i + 1`"
read array[$i]
b=${array[$i]}
echo "$b"
i=`expr $i + 1`
done

2、将字符串里的字母逐个放入数组,并输出到“标准输出”


#!/bin/bash
chars='abcdefghijklmnopqrstuvwxyz'
for (( i=0; i<26; i++ )) ; do
array[$i]=${chars:$i:1}
echo ${array[$i]}
done

这里有趣的地方是 ${chars:$i:1},表示从chars字符串的 $i 位置开始,获取 1 个字符。如果将 1 改为 3 ,就获取 3 个字符啦~ 结果是:
abc
bcd
...
vxy
xyz
yz //没有足够字符串获取了
z //没有足够字符串获取了

下面介绍将数组应用到shell环境变量的一些例子。

3、将数组应用到shell环境变量(1)


数组赋值:
[root@pps ~]# SEASON=("Srping" "Summer" "Autumn" "Winter")
当你发现赋值错了,也可以立刻从新赋值纠正,如上面的 Spring 被写成 Srping。
重新赋值:(原来的值被重写)
[root@pps ~]# SEASON=("Spring" "Summer" "Autumn" "Winter")

查看一下环境变量:
[root@pps ~]# set | grep SEASON
SEASON=([0]="Spring" [1]="Summer" [2]="Autumn" [3]="Winter")

显示整个数组:
[root@pps ~]# echo ${SEASON[*]} 或者 echo ${SEASON[@]}
Spring Summer Autumn Winter

显示某一数组元素:
[root@pps ~]# echo ${SEASON[3]}
Winter

给单个数组元素赋值:
[root@pps ~]# SEASON[0]="New_Spring"

再查看一下看数组:
[root@pps ~]# echo ${SEASON[*]}
New_Spring Summer Autumn Winter

清除指定的单个数组元素:
[root@pps ~]# unset SEASON[2]

清除整个数组:
[root@pps ~]# unset SEASON

4、将数组应用到shell环境变量(2)
使用tr命令将文件中的回车转换成空格:


[root@pps ~]# cat /etc/shells | tr "n" " " > /tmp/tmp.file

将文件中内容给数组赋值:(碰到第一个回车符之前的内容)

[root@pps ~]# read -a SHELLS < /tmp/tmp.file

查看数组赋值情况:

[root@pps ~]# set | grep "SHELLS"
SHELLS=([0]="/bin/sh" [1]="/bin/bash" [2]="/sbin/nologin" [3]="/bin/tcsh" [4]="/bin/csh" [5]="/bin/ksh")

后面可以将这个数组环境变量应用到其它的SHELL脚本或者应用程序里了。

总结:有了以上的这些内容,以后在shell编程中,对数组这块来讲,应该不成什么问题了,你做到了吗?!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

linux shell数组深入学习理解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux shell数组深入学习理解

bash shell只支持一维数组,但参数个数没有限制。声明一个数组:declare -a array(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组)数组赋值:(1) array=(var1 var2 var3 ...
2022-06-04

通过实例深入理解linux shell数组

本文为大家介绍linxu shell中数组的相关知识,并举了很多例子供参考,包括数组的复制,计算,删除,替换等,是学习shell 数组的不可多得的好文章。 数组的声明: 1)array[key]=value # array[0]=one,a
2022-06-04

怎么理解linux shell数组

这篇文章给大家介绍怎么理解linux shell数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为大家介绍linux shell数组的相关知识,并提供了充足的例子供参考。声明一个数组:declare -a array
2023-06-05

学习Golang:深入理解常用标准库!

从入门到精通:Golang常用标准库详解!一、引言随着软件开发的快速发展,程序语言的选择变得越来越重要。在各种编程语言中,Golang(又称Go语言)因为其高效性、简洁性和并发性而备受关注。Golang具备强大的标准库,提供了丰富的功能和工
学习Golang:深入理解常用标准库!
2023-12-29

如何理解Linux Shell脚本数组和关联数组

本篇内容主要讲解“如何理解Linux Shell脚本数组和关联数组”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Linux Shell脚本数组和关联数组”吧!一、数组和关联数组数组是Sh
2023-06-09

深入学习Android ANR 的原理分析及解决办法

目录一、ANR说明和原因1.1 简介1.2 原因1.3 避免二、ANR分析办法2.1 ANR重现2.2 ANR分析办法一:Log2.3 ANR分析办法二:traces.txt2.4 ANR分析办法三:Java线程调用分析2.5 ANR分析办
2022-06-07

深入理解NumPy简明教程---数组3(组合)

前两篇文章对NumPy数组做了基本的介绍,本篇文章对NumPy数组进行较深入的探讨。首先介绍自定义类型的数组,接着数组的组合,最后介绍数组复制方面的问题。 自定义结构数组通过NumPy也可以定义像C语言那样的结构类型。在NumPy中定义结构
2022-06-04

深入理解PHP数组反转的算法

php 数组反转有两种方法:array_reverse() 函数:直接修改数组,时间复杂度 o(n)。手动反转方法:创建新数组存储反转元素,时间复杂度 o(n),可自定义操作。深入理解 PHP 数组反转的算法数组反转是一种常见的数据操作,
深入理解PHP数组反转的算法
2024-04-28

深入理解NumPy简明教程---数组2

NumPy数组(2、数组的操作)基本运算数组的算术运算是按元素逐个运算。数组运算后将创建包含运算结果的新数组。>>> a= np.array([20,30,40,50]) >>> b= np.arange( 4) >>> b arra
2022-06-04

深入理解NumPy简明教程---数组1

目前我的工作是将NumPy引入到Pyston中(一款Dropbox实现的Python编译器/解释器)。在工作过程中,我深入接触了NumPy源码,了解其实现并提交了PR修复NumPy的bug。在与NumPy源码以及NumPy开发者打交道的过程
2022-06-04

Linux编程进阶:深入理解exit函数原理

exit 函数是 Linux 系统中用于终止进程的一个重要函数清理资源:在调用 exit 函数时,会自动关闭所有已打开的文件描述符,并释放进程占用的内存资源。这些操作有助于确保系统资源得到合理分配和回收。终止子进程:如果当前进程有子进程,e
Linux编程进阶:深入理解exit函数原理
2024-09-09

学习PHP8的新特性,深入理解最新技术的指南

深入解析PHP8的新特性,助您掌握最新技术随着时间的推移,PHP编程语言一直在不断演进和改进。最近发布的PHP8版本为开发者提供了许多令人兴奋的新特性和改进,为我们的开发工作带来了更多便利和效率。在本文中,我们将深入解析PHP8的新特性,并
学习PHP8的新特性,深入理解最新技术的指南
2023-12-23

深入理解java中反射机制(含数组参数)

java的反射是我一直非常喜欢的地方,因为有了这个,可以让程序的灵活性大大的增加,同时通用性也提高了很多。反射原理什么的,我就不想做过大介绍了,网上一搜,就一大把。(下面我是只附录介绍下)Reflection 是Java被视为动态(或准动态)语言的一个关键性质
深入理解java中反射机制(含数组参数)
2021-12-09

编程热搜

目录