如何制作一个脚本来检查多个文件以查看它们是否可读

如何制作一个脚本来检查多个文件以查看它们是否可读

我了解如何使用 [-r] 读取一个文件,但是如何制作一个接受多个文件输入并进行检查的脚本呢?

假设我输入

./checkfile hi hello world

脚本应该返回:

hi is readable 
hello is readable
world is not readable 
summary: 2 of 3 files are readable

答案1

#! /bin/sh -
n=0
for file do
  if [ -r "$file" ]; then
    printf '"%s" is readable\n' "$file"
    n=$((n + 1))
  else
    printf '"%s" is not readable\n' "$file"
  fi
done
echo "$n out of $# files were readable"

[ -r file ]file测试调用该命令的进程(通常使用系统调用)是否可以[由您(运行该脚本的用户)读取access()

它没有说明其他用户是否能够阅读它。它也不会尝试读取它。例如,它无法检测到由于底层存储有缺陷而无法读取的文件。

答案2

$@是一个特殊变量,它将传递给脚本的所有参数(位置参数)存储在类似数组的结构中。

$1, $2, $3, ... are the positional parameters.
"$@" is an array-like construct of all positional parameters, {$1, $2, $3 ...}.

有关此内容的更多信息,请参见bash 参考手册

相关内容