MST

星途 面试题库

面试题:Bash数组切片与映射综合操作

假设有一个Bash数组,其元素为一系列文件路径,如['/home/user1/file1.txt', '/home/user2/file2.txt', '/home/user3/file3.txt']。请使用数组切片和映射操作,提取出每个路径中的文件名(不包含路径部分),并将这些文件名存储到一个新的数组中,最后输出新数组的所有元素。
39.5万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

在Bash中,你可以这样实现:

file_paths=("/home/user1/file1.txt" "/home/user2/file2.txt" "/home/user3/file3.txt")
file_names=()
for path in "${file_paths[@]}"; do
    file_names+=("${path##*/}")
done
echo "${file_names[@]}"

解释:

  1. 首先定义了包含文件路径的数组 file_paths
  2. 然后初始化一个空数组 file_names 用于存储文件名。
  3. 使用 for 循环遍历 file_paths 数组中的每个路径。
  4. ${path##*/} 是Bash的参数扩展,用于从路径 path 中提取文件名(## 表示删除从左到右最长的匹配模式,这里模式是 */,即所有的路径部分直到最后一个 /)。
  5. 将提取的文件名添加到 file_names 数组中。
  6. 最后使用 echo 输出 file_names 数组的所有元素。