как создать сценарий, который проверяет несколько файлов, чтобы узнать, доступны ли они для чтения

Я понимаю, как читать один файл, используя [-r] Но как мне создать скрипт, который принимает множественный ввод файлов и проверяет?

Допустим, я набираю

./checkfile hi hello world

, скрипт должен вернуть:

hi is readable 
hello is readable
world is not readable 
summary: 2 of 3 files are readable
0
15.03.2017, 19:01
2 ответа

$@ - это специальная переменная, которая хранит все аргументы (позиционные параметры), переданные скрипту, в массивоподобной структуре.

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

Подробнее об этом в справочном руководстве по bash

0
28.01.2020, 02:46
#! /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] проверяет, доступен ли файл для чтения процессом, вызывающим этот [, то есть вы, пользователь, запускающий этот сценарий, обычно использующий системный вызов access () .

Здесь ничего не говорится о том, смогут ли его прочитать другие пользователи. Он также не пытается это читать. Например, он не сможет обнаружить файлы, которые не читаются, потому что базовое хранилище неисправно.

1
28.01.2020, 02:46

Теги

Похожие вопросы