clicsis
(usa Debian)
Enviado em 26/04/2008 - 17:05h
O objetivo do script era executar um loop em vários arquivos dentre eles alguns que estão vazio. Ignorar os varios e ao identificar um com conteúdo listar as linhas do mesmo.
O Erro é:
Quando é encontrado o arquivo com conteúdo e com uma única linha, a função que portanto deveria ser executada uma vez, pois esse é o número de linha, ele está executando o loop por quatro vezes, que seria a quantidade de loop externos referente a quantidade de arquivos e não a quantidade de linha.
Abaixo está o Script:
===================================
#! /bin/bash
lstArquivos=("arq1 arq2 arq3 arq4");
# Ler o nome dos arquivos lstArquivos quebrando por espaços (OK)
# LOOP ( >>> A <<< Para os nomes dos arquivos)
for defTitulos in ${lstArquivos[@]}; do
# Ler os arquivos possiveis um a um (OK)
lstTitulos=`echo '/usr/local/ativ_'$defTitulos'.txt'`;
# Verifica o tamanho do arquivo
TamanhoArquivo=$(du $lstTitulos | awk '{print $1}')
# Ignorando arquivos vazios (OK)
if [ $TamanhoArquivo -gt 3 ]; then
# Loop das linhas, de cada arquivo (ERRO)
# O arquivo que tem conteúdo é dado Loop 4 vezes, correspondente a quantidade em lstArquivos
# Quando não deveria por esse seria um Loop interno para pegar as linhas do arquivo
# LOOP ( >>> B <<< Para as linhas contida no arquivo)
for i in `cat -s $lstTitulos`; do
# ERRO: Essa linha se repete por 4 vezes
echo 'Pegando o arquivo: '$defTitulos;
echo $lstTitulos;
done
else
echo 'O arquivo: '$defTitulos' está vazio';
fi
done
Exemplo do erro:
Pegando o arquivo: arq1
linha1
Pegando o arquivo: arq1
linha1
Pegando o arquivo: arq1
linha1
Pegando o arquivo: arq1
linha1
O arquivo arq2 está vazio
O arquivo arq3 está vazio
O arquivo arq4 está vazio
O arquivo arq5 está vazio
===================================
Desde já, agradeço.