Bonjour,

On m'a donné un script shell qui ne fonctionne pas.
Je n'arrive pas à trouver l'erreur.
Est-ce que vous avez une idée ?

Voici le script :

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
#!/bin/bash 
# Le fichier passe en paramètre est suppose contenir 
		# les données des variables séparées par des ";". 
# En sortie, le tableau disjonctif complet 
 
FS=';' 
 
{  
head -1 "$1" | awk -F ${FS} '{print NF}'; 
for f in $(seq 1 $(head -1 "$1" | awk -F ${FS} '{print NF}')); 
do  
	cat "$1" | awk -F ${FS} "{print \$$f}" | sort -u | wc -l; 
	cat "$1" | awk -F ${FS} "{print \$$f}" | sort -u; 
done; 
cat "$1"; 
} | awk -F ${FS} 'BEGIN{ 
		getline NB_VAR; 
		for (i=1;i<=NB_VAR;i++) { 
			getline NB_MOD; 
			VAL="0 ";for (j=2;j<NB_MOD;j++) {VAL=VAL"0 ";}; 
			for (j=1;j<=NB_MOD;j++) { 
				getline MOD;  
				printf("%s ",MOD); 
				val[i MOD]=substr(VAL,0,(j-1)*2)"1 "substr(VAL,0,(NB_MOD-j)*2); 
			} 
		} 
		print ""; 
	}{	for (i=1;i<=NB_VAR;i++) { 
			printf("%s",val[i $i]); 
		};print ""; 
	}'

merci