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