Boucle while dans boucle while
Bonjour à tous
je suis auto didactique et débutant en script shell. veuillez m'excuser par avance pour cette question mais après plusieurs recherches dans le forum et lecture de cours bash je ne trouve pas ma réponse ou en tout cas comment réaliser cette opération. :aie:
Le but est d'itérer tout les fichiers d'un dossier comprenant des fichiers .txt de 7lignes chacun et de comparer avec un fichier de 400 lignes pour trouver une concordance.
je souhaite imbriquer plusieurs boucles while comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| i=1
# boucle fichier
while (($i <= Nombrefichier)) ; do
echo $i
j=1
# boucle ligne
while (($j <= Nombreligne)) ; do
echo $j
((j=j+2))
done
((i++))
done |
il me semble avoir compris que le problème vient de la création de sous shell. et qu'un while read ... done<<< fichier.txt
permet de résoudre le problème. mais j'arrive pas à le faire :aie:
voici mon code désolé car il est pas très propre.
##############################
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| echo "Demarrage comparaison"
find . -type f -name "tmpdat*.txt" | awk -F. '
{a[$NF]++;} END{for (i in a) print a[i];}'| cat > NBtmpdat.txt
# recherche groupe de fichier à iterer "fichier*" et renvoie leur nombre dans NBtmpdat.txt
NBFichier=$( awk 'NR == 1 {print}' NBtmpdat.txt)
#renvoie le nb de fichier à itérer
echo "nb de fichier: $NBFichier"
#controle insertion NBtmpdat.txt dans valeur dans $NBFichier
ITFichier=1
Ri=1
ARC=Final.dat
#insertion nom gros fichier dans variable
$CNbLigne=$(awk 'END {print NR}' $ARC)
#renvoie le nb de ligne à itérer
echo $CNbLigne
#controle insertion Nb ligne dans valeur dans $CNbLigne
while (($ITFichier <= $NBFichier)) ; do
# Courbe Reférence
Rj=1
RJ1=$(awk -F';' 'NR=='$Rj' {print $3}' tmpdat$Ri.txt)
((Rj=Ri+1))
RJ2=$(awk -F';' 'NR=='$Rj' {print $3}' tmpdat$Ri.txt)
((Rj=Ri+2))
RJ3=$(awk -F';' 'NR=='$Rj' {print $3}' tmpdat$Ri.txt)
((Rj=Ri+3))
RJ4=$(awk -F';' 'NR=='$Rj' {print $3}' tmpdat$Ri.txt)
((Rj=Ri+4))
RJ5=$(awk -F';' 'NR=='$Rj' {print $3}' tmpdat$Ri.txt)
((Rj=Ri+5))
RJ6=$(awk -F';' 'NR=='$Rj' {print $3}' tmpdat$Ri.txt)
((Rj=Ri+6))
RJ7=$(awk -F';' 'NR=='$Rj' {print $3}' tmpdat$Ri.txt)
RNom=$(awk -F';' 'NR=='$Ri' {print $1}' $ARC)
echo "Nom courbe comparateur" $RNom
#Courbes A Comparer
echo "nb de ligne" $CNbLigne
i=1
ItLigne=1
while (( $ItLigne <= $CNbLigne )) ; do
((j=i))
CJ1=$(awk -F';' 'NR=='$j' {print $3}' $ARC)
((j=i+1))
CJ2=$(awk -F';' 'NR=='$j' {print $3}' $ARC)
((j=i+2))
CJ3=$(awk -F';' 'NR=='$j' {print $3}' $ARC)
((j=i+3))
CJ4=$(awk -F';' 'NR=='$j' {print $3}' $ARC)
((j=i+4))
CJ5=$(awk -F';' 'NR=='$j' {print $3}' $ARC)
((j=i+5))
CJ6=$(awk -F';' 'NR=='$j' {print $3}' $ARC)
((j=i+6))
CJ7=$(awk -F';' 'NR=='$j' {print $3}' $ARC)
Nom=$(awk -F';' 'NR=='$i' {print $1}' $ARC)
echo "Nom courbe comparée " $Nom
((i=i+7))
echo "Iteration i" $i
((CItLigne=CItLigne+7))
echo "Iteration Iterateur de ligne" $CItLigne
done
((Ri++))
((ITFichier++))
done |
je vous remercie d'avance pour vos conseils
merci à tous