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.

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

voici mon code désolé car il est pas très propre.

##############################

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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