5 list 语法

server/2025/1/15 11:45:24/

在 Shell 脚本中,列表(数组)是一种非常有用的数据结构,可以用来存储多个值。

定义数组

# 定义一个空数组
my_array=()# 定义一个带有初始值的数组
my_array=("value1" "value2" "value3")

访问数组元素

# 访问数组的第一个元素(索引从0开始)
echo "${my_array[0]}"  # 输出: value1# 访问数组的所有元素
echo "${my_array[@]}"  # 输出: value1 value2 value3

添加元素到数组

# 添加单个元素到数组
my_array+=("value4")# 添加多个元素到数组
my_array+=("value5" "value6")

获取数组长度

# 获取数组的长度
length=${#my_array[@]}
echo "Array length: $length"  # 输出: Array length: 6

遍历数组

# 使用 for 循环遍历数组的所有元素
for element in "${my_array[@]}"; doecho "$element"
done

示例解释

# 初始化一个空数组,用于存储指令名称
INSTRUCTIONS=()# 遍历 SOURCE_DIR 目录下所有扩展名为 .c 的文件
for FILE in "$SOURCE_DIR"/*.c; doif [ -f "$FILE" ]; then# 复制文件到目标目录cp "$FILE" "$TARGET_DIR"# 获取文件名(不包括扩展名),并将其赋值给变量 INSTRUCTIONINSTRUCTION=$(basename "$FILE" .c)# 将指令名称添加到 INSTRUCTIONS 数组中INSTRUCTIONS+=("$INSTRUCTION")fi
done# 打印所有指令名称
echo "Instructions: ${INSTRUCTIONS[@]}"

在这个示例中:

  1. 初始化数组

    INSTRUCTIONS=()
    

    初始化一个空数组 INSTRUCTIONS,用于存储指令名称。

  2. 遍历文件并添加到数组

    for FILE in "$SOURCE_DIR"/*.c; doif [ -f "$FILE" ]; thencp "$FILE" "$TARGET_DIR"INSTRUCTION=$(basename "$FILE" .c)INSTRUCTIONS+=("$INSTRUCTION")fi
    done
    
    • 遍历 SOURCE_DIR 目录下所有扩展名为 .c 的文件。
    • 如果文件存在且是普通文件,则将其复制到目标目录 TARGET_DIR
    • 获取文件名(不包括扩展名),并将其添加到 INSTRUCTIONS 数组中。
  3. 打印数组内容

    echo "Instructions: ${INSTRUCTIONS[@]}"
    

    打印数组 INSTRUCTIONS 中的所有指令名称。

其他数组操作示例

删除数组元素
# 删除数组中的某个元素
unset my_array[1]# 删除整个数组
unset my_array
访问数组的部分元素
# 访问数组的前两个元素
echo "${my_array[@]:0:2}"  # 输出: value1 value3

完整示例

以下是一个完整的示例脚本,展示了数组的各种操作:

#!/bin/bash# 定义一个带有初始值的数组
my_array=("value1" "value2" "value3")# 添加元素到数组
my_array+=("value4")
my_array+=("value5" "value6")# 获取数组的长度
length=${#my_array[@]}
echo "Array length: $length"# 访问数组的所有元素
echo "All elements: ${my_array[@]}"# 遍历数组的所有元素
for element in "${my_array[@]}"; doecho "Element: $element"
done# 删除数组中的某个元素
unset my_array[1]# 访问数组的所有元素
echo "All elements after deletion: ${my_array[@]}"# 删除整个数组
unset my_array# 尝试访问已删除的数组
echo "All elements after deleting the array: ${my_array[@]}"
kemao@TP340:~/shell-test$ ./test.sh 
Array length: 6
All elements: value1 value2 value3 value4 value5 value6
Element: value1
Element: value2
Element: value3
Element: value4
Element: value5
Element: value6
All elements after deletion: value1 value3 value4 value5 value6
All elements after deleting the array: 

http://www.ppmy.cn/server/158545.html

相关文章

k8s故障 ImagePullBackOff状态排错

需看yaml 这个策略是否开启

(蓝桥杯)二维数组前缀和典型例题——子矩阵求和

题目描述 小 A 同学有着很强的计算能力,张老师为了检验小 AA同学的计算能力,写了一个 n 行 m 列的矩阵数列。 张老师问了小 A 同学 k 个问题,每个问题会先告知小 A 同学 4 个数 x1,y1,x2,y2画出一个子矩阵,张老师请小 A同学计算出…

计算机视觉算法实战——手写公式识别(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​​​​​​​​​​​​​​​​ 1. 领域介绍✨✨ 手写公式识别(Handwritten Mathematical Expression Recognition, HME…

Excel如何制作轮班表

Excel如何制作轮班表 1. 概念讲解2. 例子3. 详细讲解3.1 前期准备3.2 人员依次编号3.3 填入日期,和日期编号3.4 Mod函数-填充值班人员编号3.4 Vlookup函数-进行查找人员 操作文档 1. 概念讲解 轮班是指一种工作安排系统,员工每天、每周或每月在不同班次…

初识JAVA-面向对象的三大特征之多态

1. 重温面向对象 面向对象是一种解决问题的思想,它把计算机程序看作是各种对象组合起来的。每个对象都有自己的数据(属性)和行为(方法),主要依靠对象之间的交互来解决和实现问题。Java是一门纯面向对象的语…

【数据仓库】— 5分钟浅谈数据仓库(适合新手)从理论到实践

大家好,我是摇光~ 对于刚进入大数据领域的萌新,且想要在数据分析岗、数据运维岗、数据工程师这些岗位立足,了解数据仓库是必要的,接下来我尽量用通俗易懂的语言让大家了解到数据仓库。 在当今大数据盛行的时代,数据仓…

【网络云SRE运维开发】2025第3周-每日【2025/01/14】小测-【第13章ospf路由协议】理论和实操

文章目录 选择题(10道)理论题(5道)实操题(5道) 【网络云SRE运维开发】2025第3周-每日【2025/01/14】小测-【第12章ospf路由协议】理论和实操 选择题(10道) 在OSPF协议中&#xff0c…

Active Prompting with Chain-of-Thought for Large Language Models

题目 大型语言模型的思维链主动提示 论文地址:https://arxiv.org/abs/2302.12246 项目地址:https://github.com/shizhediao/active-prompt 摘要 大型语言模型(LLM)规模的不断扩大为各种需要推理的复杂任务带来了涌现能力,例如算术和常识推理…