como fazer um script que verifica vários arquivos para ver se eles são legíveis

0

Eu recebo como ler um arquivo usando [-r] Mas como faço um script que recebe uma entrada múltipla de arquivos e cheques?

Digamos que eu digite

./checkfile hi hello world

o script deve retornar:

hi is readable 
hello is readable
world is not readable 
summary: 2 of 3 files are readable
    
por JVAN 15.03.2017 / 16:44

2 respostas

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 ] testa se o file é legível pelo processo invocando o comando [ , portanto, por você, o usuário que está executando esse script, geralmente usando a chamada do sistema access() .

Ele não diz nada sobre a possibilidade de outros usuários conseguirem lê-lo. Não tenta ler também. Por exemplo, não será capaz de detectar arquivos que não possam ser lidos porque o armazenamento subjacente está com defeito.

    
por 15.03.2017 / 17:15
0

$@ é uma variável especial que armazena todos os argumentos (parâmetros posicionais) passados para o script em uma estrutura parecida com uma matriz.

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

Mais sobre isso no manual de referência da bash

    
por 15.03.2017 / 16:54