我了解如何使用 [-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 参考手册