MST
星途 面试题库

面试题:Bash特殊变量与参数扩展的优化组合应用

假设有一个Bash脚本用于处理大量文件,脚本接受多个目录路径作为参数。在脚本中,要使用特殊变量和参数扩展实现以下功能:统计每个目录下文件的数量,并且如果某个目录路径参数是相对路径,将其转换为绝对路径再进行处理。请编写这个脚本,并解释脚本中特殊变量和参数扩展的关键用法及作用。
26.1万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

for dir in "$@"; do
    # 如果是相对路径,转换为绝对路径
    if [[! $dir =~ ^/ ]]; then
        dir=$(realpath "$dir")
    fi

    file_count=$(ls -1 "$dir" | wc -l)
    echo "目录 $dir 下文件数量: $file_count"
done

特殊变量和参数扩展关键用法及作用:

  1. $@
    • 用法:在for dir in "$@"; do 这行代码中使用。
    • 作用:表示脚本接收到的所有参数,在循环中,每次迭代会依次将每个参数赋值给变量dir,从而遍历所有传入的目录路径参数。
  2. $dir
    • 用法:在脚本多处使用,如if [[! $dir =~ ^/ ]]; thenfile_count=$(ls -1 "$dir" | wc -l) 等。
    • 作用:存储当前正在处理的目录路径,既用于路径判断,也用于获取目录下文件数量。
  3. $(realpath "$dir")
    • 用法:在dir=$(realpath "$dir") 中使用。
    • 作用realpath 命令将相对路径转换为绝对路径,这行代码将相对路径的$dir更新为绝对路径,确保后续处理能正确定位目录。
  4. $(ls -1 "$dir" | wc -l)
    • 用法:在file_count=$(ls -1 "$dir" | wc -l) 中使用。
    • 作用ls -1 "$dir" 列出指定目录下的所有文件,每行一个,然后通过管道|将结果传递给wc -lwc -l 统计行数,即目录下文件的数量,并将结果赋值给file_count变量。