[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [solved][hs] awk + boucle dans script shell



Le 09.04.05, Steve a tapoté :

| Le samedi 09 avr 2005 à 11 h 46, Thomas a dit:
|
| > Le 09.04.05, Steve a tapoté :
| >
| > | 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, alors que moi je veux qu'il me sorte le ième champ
| > seulement..|
| > | pige pas ..
| >
| > 	C'est un peu normal...
| > 	ton $i est entre des '' donc il n'est pas "expandé" par le
| > 	shell. champ=`awk "{print \$$i}" $tempfile`
| >
| Syntaxe exacte:
| 	champ=`awk "{print \$ $i}" tempfile
| 	(backslash dollar espace dollar i, littéralement}

	Oui, très juste.


| [me reste juste à bien piger pourquoi ...]

	Pas compliqué : c'est le shell qui ne remplace pas $i
	par sa valeur puisqu'il est entre apostrophes et non entre
	guillemets. De toutes façons il aurait fallu en plus rajouter
	un $ pour que awk prenne cette valeur comme étant un numéro
	de champ.


Thomas
-- 
BOFH excuse #97:
Small animal kamikaze attack on power supplies.



Reply to: