Erro no script [RESOLVIDO]

1. Erro no script [RESOLVIDO]

JOELSON VIEIRA OLIVEIRA
jvo

(usa Ubuntu)

Enviado em 13/07/2020 - 10:55h

#!/bin/bash

# Crie um script que deverá ler 3 arquivos
# previamente preparados e contar a quantidade de
# valores que são maiores que 100.

clear
cont=0

leArquivo1() {
while read valor
do
if [ $valor -gt 100 ]
then
cont=$(($cont+1))
fi
done < arquivo1a.txt

echo " arquivo1a a quantidade de números maiores que 100 é : $cont"
}
leArquivo2() {
while read valor1
do
if [ $valor1 -gt 100 ]
then
cont1=$(($cont1+1))
fi
done < arquivo1b.txt
echo "arquivo1b a quantidade de números maiores que 100 é : $cont1"
}
leArquivo3() {
while read valor2
do
if [ $valor2 -gt 100 ]
then
cont2=$(($cont2+1))
fi
done < arquivo1c.txt
echo "arquivo1c a quantidade de números maiores que 100 é : $cont2"
}
leArquivo1
leArquivo2
leArquivo3


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/07/2020 - 18:17h

jvo escreveu:

#!/bin/bash

# Crie um script que deverá ler 3 arquivos
# previamente preparados e contar a quantidade de
# valores que são maiores que 100.

clear
cont=0

leArquivo1() {
while read valor
do
if [ $valor -gt 100 ]
then
cont=$(($cont+1))
fi
done < arquivo1a.txt

echo " arquivo1a a quantidade de números maiores que 100 é : $cont"
}
leArquivo2() {
while read valor1
do
if [ $valor1 -gt 100 ]
then
cont1=$(($cont1+1))
fi
done < arquivo1b.txt
echo "arquivo1b a quantidade de números maiores que 100 é : $cont1"
}
leArquivo3() {
while read valor2
do
if [ $valor2 -gt 100 ]
then
cont2=$(($cont2+1))
fi
done < arquivo1c.txt
echo "arquivo1c a quantidade de números maiores que 100 é : $cont2"
}
leArquivo1
leArquivo2
leArquivo3


Boa noite Jvo.
Segue sugestão, awk:

for arq in Arquivo_0{1,2,3};do
awk '{if($0>100) count++};END {print FILENAME" tem" ,count" números maiores que 100."}' ${arq}
done

Em bash, bem mais lento, mais de 10x
for arq in Arquivo_0{1,2,3};do count=0;
while IFS=$'\n' read -r num;do
(($num>100)) && let count++
done<${arq}
echo "O arquivo: $arq, tem $count números maiores que 100"
done

OBS:
Para gerar os arquivos, usei o seguinte comando:
for arq in Arquivo_0{1,2,3};do
> ${arq};
for ((n=0;n<1000;n++)) { echo "$(($RANDOM%1000))" >> ${arq};}
done

______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts