Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

bris a écrit :

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