A função a seguir verifica se todos os seus argumentos são arquivos legíveis:
files_are_readable () {
for x do
[ -r "$x" ] || return 1
done
}
Eu tenho que verificar se um grupo de arquivos é legível. Eu sei como eu iria verificar um arquivo usando [ -r file.txt ]
, mas como eu iria escrever um loop que verificaria vários arquivos (incluindo diretórios)?
Por exemplo, file1.txt file2.txt directory1 directory2 file3.txt
.
A função a seguir verifica se todos os seus argumentos são arquivos legíveis:
files_are_readable () {
for x do
[ -r "$x" ] || return 1
done
}
No bash você poderia fazer
for file in file1.txt file2.txt directory1; do
if [[ -r $file ]]; then
...
fi
done
e a parte que é a lista de arquivos pode ser qualquer coisa onde você possa ler cada "palavra" separada por espaço e colocar em $ file, então você poderia, digamos
for file in $(find .); do
...
done
se você quiser fazer algo com todos os arquivos e diretórios em seu diretório atual ou qualquer outra coisa parecida. Tenha cuidado com o exemplo com find, no entanto, se você tiver espaços em qualquer um dos seus arquivos ou nomes de diretórios, o arquivo $ ainda estará sendo dividido no espaço, de modo que ele obteria cada parte como um "arquivo" diferente para tentar
Tags files test shell-script