5 list 语法

打印 上一主题 下一主题

主题 963|帖子 963|积分 2889

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在 Shell 脚本中,列表(数组)是一种非常有效的数据布局,可以用来存储多个值。
界说数组

  1. # 定义一个空数组
  2. my_array=()
  3. # 定义一个带有初始值的数组
  4. my_array=("value1" "value2" "value3")
复制代码
访问数组元素

  1. # 访问数组的第一个元素(索引从0开始)
  2. echo "${my_array[0]}"  # 输出: value1
  3. # 访问数组的所有元素
  4. echo "${my_array[@]}"  # 输出: value1 value2 value3
复制代码
添加元素到数组

  1. # 添加单个元素到数组
  2. my_array+=("value4")
  3. # 添加多个元素到数组
  4. my_array+=("value5" "value6")
复制代码
获取数组长度

  1. # 获取数组的长度
  2. length=${#my_array[@]}
  3. echo "Array length: $length"  # 输出: Array length: 6
复制代码
遍历数组

  1. # 使用 for 循环遍历数组的所有元素
  2. for element in "${my_array[@]}"; do
  3.     echo "$element"
  4. done
复制代码
示例解释

  1. # 初始化一个空数组,用于存储指令名称
  2. INSTRUCTIONS=()
  3. # 遍历 SOURCE_DIR 目录下所有扩展名为 .c 的文件
  4. for FILE in "$SOURCE_DIR"/*.c; do
  5.     if [ -f "$FILE" ]; then
  6.         # 复制文件到目标目录
  7.         cp "$FILE" "$TARGET_DIR"
  8.         
  9.         # 获取文件名(不包括扩展名),并将其赋值给变量 INSTRUCTION
  10.         INSTRUCTION=$(basename "$FILE" .c)
  11.         
  12.         # 将指令名称添加到 INSTRUCTIONS 数组中
  13.         INSTRUCTIONS+=("$INSTRUCTION")
  14.     fi
  15. done
  16. # 打印所有指令名称
  17. echo "Instructions: ${INSTRUCTIONS[@]}"
复制代码
在这个示例中:

  • 初始化数组
    1. INSTRUCTIONS=()
    复制代码
    初始化一个空数组 INSTRUCTIONS,用于存储指令名称。
  • 遍历文件并添加到数组
    1. for FILE in "$SOURCE_DIR"/*.c; do
    2.     if [ -f "$FILE" ]; then
    3.         cp "$FILE" "$TARGET_DIR"
    4.         INSTRUCTION=$(basename "$FILE" .c)
    5.         INSTRUCTIONS+=("$INSTRUCTION")
    6.     fi
    7. done
    复制代码

    • 遍历 SOURCE_DIR 目次下全部扩展名为 .c 的文件。
    • 如果文件存在且是普通文件,则将其复制到目标目次 TARGET_DIR。
    • 获取文件名(不包罗扩展名),并将其添加到 INSTRUCTIONS 数组中。

  • 打印数组内容
    1. echo "Instructions: ${INSTRUCTIONS[@]}"
    复制代码
    打印数组 INSTRUCTIONS 中的全部指令名称。
其他数组操作示例

删除数组元素

  1. # 删除数组中的某个元素
  2. unset my_array[1]
  3. # 删除整个数组
  4. unset my_array
复制代码
访问数组的部分元素

  1. # 访问数组的前两个元素
  2. echo "${my_array[@]:0:2}"  # 输出: value1 value3
复制代码
完备示例

以下是一个完备的示例脚本,展示了数组的各种操作:
  1. #!/bin/bash
  2. # 定义一个带有初始值的数组
  3. my_array=("value1" "value2" "value3")
  4. # 添加元素到数组
  5. my_array+=("value4")
  6. my_array+=("value5" "value6")
  7. # 获取数组的长度
  8. length=${#my_array[@]}
  9. echo "Array length: $length"
  10. # 访问数组的所有元素
  11. echo "All elements: ${my_array[@]}"
  12. # 遍历数组的所有元素
  13. for element in "${my_array[@]}"; do
  14.     echo "Element: $element"
  15. done
  16. # 删除数组中的某个元素
  17. unset my_array[1]
  18. # 访问数组的所有元素
  19. echo "All elements after deletion: ${my_array[@]}"
  20. # 删除整个数组
  21. unset my_array
  22. # 尝试访问已删除的数组
  23. echo "All elements after deleting the array: ${my_array[@]}"
复制代码
  1. kemao@TP340:~/shell-test$ ./test.sh
  2. Array length: 6
  3. All elements: value1 value2 value3 value4 value5 value6
  4. Element: value1
  5. Element: value2
  6. Element: value3
  7. Element: value4
  8. Element: value5
  9. Element: value6
  10. All elements after deletion: value1 value3 value4 value5 value6
  11. All elements after deleting the array:
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表