
Alekeb
(usa Outra)
Enviado em 24/05/2015 - 18:38h
Olá a todos. Estou com um problema em shell script. Recentemente comecei a fazer um pequeno programa nessa linguagem. O objetivo do script é ler um arquivo, verificar a quantidade de elementos numéricos que existe dentro dele e em seguida, se o número de elementos numéricos for menor que X, adicionar números até que a quantidade de elementos seja igual a X. Se o número que for inserido já existir no arquivo, não inserir o número. Tentei de diversas formas. Algumas delas usando grep e variáveis, outras com loop while. Porém em todas elas, o script não para de adicionar número, mesmo após a quantidade de números no arquivo ter chegado a 15. Admito que não sei como proceder daqui pra frente. Vejam o que fiz até aqui, usando IF.
Pessoal , eu sei que esse programa está horroroso e que devem existir formas muito melhores de fazer isso, mas o que eu quero saber é? Por que não funciona?? Porquê ele insere números, mesmo depois de se passados os 7 máximos permitidos?
#!/bin/bash
## Brincando de Shell
##Vamos pegar um arquivo que contém 3 números inscritos e inserir nele números de 1 a 10
## até que tenhamos 7 números. Os números que já existem no arquivo, não podem ser repetidos.
echo "Escolha o seu arquivo: " : read arquivo
A=`grep -c '01' "$arquivo"`;
B=`grep -c '02' "$arquivo"`;
C=`grep -c '03' "$arquivo"`;
D=`grep -c '04' "$arquivo"`;
E=`grep -c '05' "$arquivo"`;
F=`grep -c '06' "$arquivo"`;
E=`grep -c '07' "$arquivo"`;
F=`grep -c '8' "$arquivo"`;
G=`grep -c '9' "$arquivo"`;
H=`grep -c '10' "$arquivo"`;
let KA="$A+$B+$C+$D+$E+$F+$G+$H"
KJ=7
if [ $KA -lt $KJ ]
then
grep -q -F '01' "$jogo" || echo -n " 01" >> "$arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F '02' "$jogo" || echo -n " 02" >> "arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F '03' "$jogo" || echo -n " 03" >> "$arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F '04' "$jogo" || echo -n " 04" >> "$arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F '05' "$jogo" || echo -n " 05" >> "$arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F ' 06' "$jogo" || echo -n " 06" >> "$arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F '07' "$jogo" || echo -n " 07" >> "$arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F '8' "$jogo" || echo -n " 8" >> "$arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F '9' "$jogo" || echo -n " 8" >> "$arquivo"
fi
if [ $KA -lt $KJ ]
then
grep -q -F '10' "$jogo" || echo -n " 8" >> "$arquivo"
fi
Eu sei que tá faltando conferir a variável $KA cada vez que um número é possivelmente inserido, mas quando tendo colocar a
variável $KA entre os passos, seja com eval ou mesmo $KA é retornado comando não encontrado :|