[-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 ...}.
이에 대한 자세한 내용은 다음을 참조하세요.배쉬 참조 매뉴얼