Steve a écrit :
Normal. '(print $i)' est ton script awk. Dans ce script, i est une variable interne, qui n'a pas été initialisée et qui vaut donc 0.Bonjour, j'essaie d'écrire un script shell contenant du awk, et il y a un truc que je ne comprends pas. voici: #!/bin/sh tempfile="unfichier.txt" # fichier contenant une ligne avec 14 champs limite=15 for ((i=1 ; i < limite ; i++)) do champ=`awk '{print $i}' $tempfile` echo "Champ $i est $champ" done et quand j'exécute ce script, il me sort la ligne entière pour chaque $i, [...]
Il t'écrit $0, c'est-à-dire toute la ligne, à chaque appel. Il faudrait mettre ta boucle dans le script awk.Si tu tiens à la façon dont tu as fait, essaye en remplaçant $i par $ENVIRON["i"] (voir man awk pour les détails de syntaxe, ça fait longtemps que je n'en ai pas fait).
merci et bon week-end