玩转Linux Shell数组(从零开始掌握Shell数组初始化技巧)

简介: 本教程详解Linux Shell数组初始化,涵盖空数组声明、赋值初始化、指定索引、命令输出填充等方法,助你掌握Bash数组基本操作,提升脚本编写效率,适合Shell初学者快速入门。

Linux Shell脚本编程 中,数组是一个非常实用的数据结构,尤其当你需要处理多个相关数据时。但对于刚入门的用户来说,Shell数组初始化 可能看起来有点复杂。别担心!本篇 Shell初学者教程 将带你一步步了解如何在 Bash(最常用的 Shell)中声明和初始化数组,让你轻松上手。

什么是 Shell 数组?

Shell 数组是一种可以存储多个值的变量。Bash 支持一维数组(不支持多维数组),数组中的每个元素都有一个索引(从 0 开始)。

1. 声明空数组

你可以先声明一个空数组,后续再添加元素:

declare -a my_array

或者更简单地直接使用:

my_array=()

2. 初始化带值的数组

你可以在声明时就给数组赋值:

my_array=(apple banana cherry)

这会创建一个包含三个字符串的数组,索引分别为 0、1、2。

3. 指定索引初始化

你也可以显式指定某个索引的值:

my_array=([0]="red" [2]="blue" [5]="green")

注意:未指定的索引(如 1、3、4)将为空,但数组长度仍按最大索引计算。

4. 从命令输出初始化数组

这是非常实用的技巧!你可以把命令的输出结果作为数组元素:

files=( $(ls *.txt) )

这会把当前目录下所有 .txt 文件名存入files数组。

5. 查看数组内容

要打印整个数组,可以使用:

echo "${my_array[@]}"

要查看数组长度:

echo "${#my_array[@]}"

小贴士

  • Shell 数组是稀疏的,即索引可以不连续。
  • 使用双引号包裹数组展开(如 "${my_array[@]}")可避免空格或特殊字符导致的问题。
  • 关联数组(用字符串作索引)需用 declare -A 声明,但本教程聚焦于普通索引数组。

总结

通过以上几种方式,你可以灵活地在 Linux Shell数组 中存储和管理数据。无论你是写自动化脚本还是处理批量任务,掌握这些 Shell数组初始化 技巧都将大大提升你的效率。希望这篇 Shell初学者教程 能帮你打下坚实基础!

继续练习吧!动手写几个脚本,你会发现 Shell 编程其实很有趣 😊

来源:

https://www.vps5.cn/category7.html

相关文章
|
29天前
|
缓存 测试技术 Python
解锁Python装饰器:让代码优雅加倍
解锁Python装饰器:让代码优雅加倍
214 133
|
29天前
|
安全 数据库连接 开发者
用Python上下文管理器,优雅管理你的资源
用Python上下文管理器,优雅管理你的资源
206 131
|
29天前
|
人工智能 Java API
【JAVA编程】全栈开发者如何构建 AI 大模型应用:OpenAI 与 Gemini 3.0 Pro 接入深度解析
Java开发者需关注API网关架构,以解决大模型调用中的供应商锁定、网络延迟与密钥管理难题。通过Spring Boot集成OpenAI兼容协议,结合poloapi.top聚合网关,实现多模型统一调用、低延迟访问与安全合规,构建稳定高效的企业级AI中台。
|
29天前
|
开发者 Python
Python 小技巧:你可能没完全掌握的 f-string 高级用法
Python 小技巧:你可能没完全掌握的 f-string 高级用法
230 132
|
28天前
|
安全 Shell Linux
Linux Shell函数中的纯函数概念(小白也能掌握的函数式编程基础)
本文介绍Linux Shell脚本中“纯函数”的概念与实践,强调其输入确定、无副作用的特性,通过对比示例讲解如何编写可预测、可复用、高可靠性的纯函数,提升脚本质量。
|
29天前
|
缓存 网络协议 Linux
RARP协议详解(Linux下反向地址解析协议入门指南)
RARP(反向地址解析协议)是一种早期网络协议,用于通过MAC地址查询IP地址,常用于无盘工作站启动时获取IP。与ARP相反,RARP实现从MAC到IP的映射。尽管现已被DHCP取代,了解RARP仍对学习Linux网络配置和网络协议演进具有重要意义。
|
29天前
|
机器学习/深度学习 缓存 异构计算
JAX性能优化实战:7个变换让TPU/GPU吃满算力
JAX性能提升七技巧:jit稳定形状、vmap替代循环、scan融合长序列、remat用计算换内存、pmap单机多卡、pjit实现SPMD并行、value_and_grad正确组合。配合分片与aux输出,最大化XLA优化,提升计算效率。
104 1
JAX性能优化实战:7个变换让TPU/GPU吃满算力
|
29天前
|
安全 网络安全 调度
直面新型DDoS攻击:基于SDK接入的端到端安全防护架构与技术实现
在数字化浪潮中,游戏、数字藏品、区块链、直播、电商、理财App等已成为互联网经济的核心支柱。然而,这些高价值、高并发的业务也成为了DDoS/CC攻击的重灾区。传统基于流量清洗和IP轮询的防护方案日益乏力,一种基于SDK接入的**端到端加密隧道**与**智能调度**技术正成为防护的新范式。本文将深入剖析其核心原理、架构实现,并结合代码示例,阐述如何为关键业务构建坚不可摧的“数字护盾”。
98 0
|
5月前
|
人工智能 关系型数据库 Java
当MySQL遇见AI:使用Vector扩展实现智能语义搜索
传统数据库的关键词搜索已无法满足现代应用对智能语义查询的需求。本文介绍如何通过MySQL的向量扩展(Vector Extension),将大模型产生的文本嵌入向量存储在MySQL中,并实现高效的语义相似度搜索。我们将完整演示从环境准备、数据库表设计、Java应用集成到性能优化的全流程,让您的传统关系型数据库瞬间具备AI智能检索能力,为构建下一代智能应用提供核心数据支撑。
551 3
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
1184 2