Pages : 1
#1 Le 24/04/2006, à 13:10
- bris
bash : boucle for
bonjour à tous,
je souhaiterai créer un petit executable qui m'affiche les groupes dont les gid sont supérieur à 1000 et d'une manière plus générale je souhaiterai apprendre à utiliser les boucles for avec avec bash, quel doit etre la syntaxe ?:
un truc du genre :
for i=0, i++
do
grep 100[i] /etc/group
done
??
merci d'avance ;-)
A+
Dernière modification par bris (Le 24/04/2006, à 13:11)
un vaut mieu que deux ! CQFD
Hors ligne
#2 Le 24/04/2006, à 14:43
- linux72
Re : bash : boucle for
le man est ton ami.
Pour etre simple:
for i in 'list'
do
action
done
Hors ligne
#3 Le 24/04/2006, à 14:47
- bris
Re : bash : boucle for
c'est justement ce "i in list" que j'ai du mal à saisir, je suis resté des sintaxes du type for (i=0, i<x, i++)
peux-tu me donner un exemple?
un vaut mieu que deux ! CQFD
Hors ligne
#4 Le 24/04/2006, à 15:26
- linux72
Re : bash : boucle for
for i in 1 2 3 4
do
echo $i
done
te donnera a l'affichage:
1
2
3
4
Hors ligne
#5 Le 24/04/2006, à 16:05
- bris
Re : bash : boucle for
et si je veux faire avec une limite ?
par exemple comme çà ? : for i in [i=0; i<10; i=i+1] ???
un vaut mieu que deux ! CQFD
Hors ligne
#6 Le 24/04/2006, à 16:27
- toma
Re : bash : boucle for
Et ça, ça marche?
LIMITE=10
for ((a=1; a <= LIMITE ; a++))
do
echo -n "$a "
done
Edit : enlèvement d'un lien périmé.
Dernière modification par toma (Le 14/10/2010, à 15:11)
... when you look long into an abyss, the abyss also looks into you.
-- Friedrich Nietzsch
Hors ligne
#7 Le 14/10/2010, à 07:42
- Mat1974
Re : bash : boucle for
La syntaxe ne serait t-elle pas plutôt celle-ci :
LIMITE=10
for ((a=1; a <= $LIMITE ; a++))
do
echo -n "$a "
done
Pourquoi fais t-on une exception pour la commande "for" ?
Hors ligne
#8 Le 14/10/2010, à 07:56
- nilux17
Re : bash : boucle for
on peut quand même faire plus simple avec "seq" (man seq)
for i in `seq 1 10`;
do
echo $i
done
Hors ligne
#9 Le 14/10/2010, à 08:18
- nilux17
Re : bash : boucle for
bonjour à tous,
je souhaiterai créer un petit executable qui m'affiche les groupes dont les gid sont supérieur à 1000 et d'une manière plus générale je souhaiterai apprendre à utiliser les boucles for avec avec bash, quel doit etre la syntaxe ?:
tu sais quoi ?
il n'y a pas besoin de for, de grep et d'un script pour faire ça, une seule ligne suffit :
awk -F: '$3 > 1000 {print $1}' /etc/group
awk , séparateur ":" , 3eme colone sup à 1000 ...
Hors ligne
#10 Le 14/10/2010, à 08:39
- nilux17
Re : bash : boucle for
Tu voulais un for, alors voila un for...
#!/bin/sh
fichier="/etc/group"
nbligne=`wc -l <$fichier`
gidmin="100"
for i in `seq 1 $nbligne`
do
ligne=`head -n $i $fichier| tail -n 1`
gid=`echo $ligne |sed s/^.*:x://|sed s/:.*$//`
if [ $gid -ge $gidmin ]
then
echo $ligne
fi
done
c'est du vite fait, alors peut-etre a optimiser (le head | tail....) et le sed | sed je trouve pas ça glorieux...
Hors ligne
Pages : 1