a daneel,

merci pour l'explication, je me suis apercu de mon erreur en meme temps que tu me l'expliquais.
Mais je bute toujours sur un souci, j'explique :
j'ai un fichier avec ces données :

admin : fredouille
user : fhemon toto tata

l'idée, et ta commande n'est pas trop loin, c'est une commande qui me donnes en fonction de la ligne choisie la liste des utilisateurs repertoriés dans le groupe admin ou user.

le souci que je rencontre, est que des que j'essais d'automatiser ca deconne.
j'essais d'automatiser avec ca :

numero_groupe=2 (a modifier en fct de la ligne voulue)
echo "les utilisateurs sont :"
i=3
while [ $i -eq "100" ]
do
cat $fichier_group | head -n $numero_groupe | tail -n 1 | cut -d' ' -f $i
i=$i+1
done

et la je vois pas ou je deconnes.......

si tu as une idée
Bon j'ai un peu retoucher ton script (désolé je n'ai pas pu m'en empêcher) :
#!/bin/bash
fichier_group="utilisateurs"
numero_groupe=2
echo "les utilisateurs sont :"
i=3
while [ $i -lt "100" ]
do
    utilisateur=`head -n $numero_groupe $fichier_group | tail -n 1 | cut -d' ' -f$i`
    if [ ${#utilisateur} -gt 0 ]; then
        echo "$utilisateur"
    fi
    i=`expr $i + 1`
done
${#utilisateur} : c'est le nombre de caractères dans la variable.
i=`expr $i + 1` : c'est pour incrémenter effectivement $i.

Le problème venait de ta boucle :
while [ $i -eq "100" ]
Ça boucle tant que i est égale à 100, or tu initialise i à 3...
Désolé hier soir j'étais en plein dev sous M$ donc je n'avais pas mon shell sous les yeux. Je ne connais pas perl j'ai juste fais du bash, awk et sed jusqu'à présent et ça m'a toujours suffit.

Bonne continuation
1. Ne jamais utiliser de `backquotes'. Au lieu de `foo`, ecrivez $(foo).
2. cat foo|head == head foo == head < foo
3. [ ${#utilisateur} -gt 0 ] -> [ -n "$utilisateur" ]
4. Au lieu de forker un expr, tu peux faire built-in : i=$(($i+1))
5. Les references aux variables doivent etre mise en double-quotes. "$fichier_group", "$numero_groupe"
6. Au lieu de gerer l'increment de i manuellement, for i in $(seq 3 100)

Mais gerer ca comme ca, c'est juste un hack. Tu pourrais avoir une ligne avec plus de 100 champs.
Ce que tu veux, c'est faire un sed a la place du cut pour virer le debut de ligne.
1. Pourrais-tu expliquer pourquoi, histoire que je m'instruise un peu, là j'ai du mal à comprendre...
3. J'avais testé [ -n "$utilisateur" ] et, voyant le résultat, je me suis rabattu sur [ ${#utilisateur} -gt 0 ]...
4. Très juste, aucune excuse.
5. Pareil.
6. Pratique, je ne connaissais pas, je me le note dans un coin...
a daneel,

Merci pour la retouche du script, et je suis d'accord pour mon erreur de boucle
while [ $i -eq "100" ]
je me suis apercu de mon erreur cette nuit en y repensant (comme quoi j'aurai du tourner 7 fois mes yeux avant de poster :-D ).

a Anvil,

1 : qu'est-ce que "backnotes" et foo (ou "$foo"), quelle est la difference ??
2 : si ca peux me donner la valeur que je veux, ok.
3 : je vais essayer après le script de daneel, mais si tu le dis....
4 : pour forker ??? et "i=$(($i+1)) je vais essayer mais je vois pas ou est la subtilité (j'avais jamais vu ca dans un script ou tuto).
5 : merci pour l'info des double quotes (quoi que je vois pas la différence ou la subtilité).
6 : la ca depasse mon niveau, qu'est ce que $(seq 3 100) ??? le debut de boucle et la limite, peut-être ? je vais essayer.

a l'ideal, oui j'espérais que sed aurait pu me donner le resultat, en virant le debut de ligne et en me laissant la possibilité de lire chacun des utilisateurs d'un groupe, mais individuellement...

Réellement, l'idée du script est de pouvoir gerer les utilisateurs du serveur que je suis en train de monter, je sais que c'est deja disponible avec adduser, addgroup et le reste, meme si je ne sais pas m'en servir autrement qu'en graphique (donc y a du boulot), mais vu que j'ai plein de choses a apprendre sur les commandes, linux, la console et le reste, je me dis que tant qu'à faire autrement essayer de faire cela directement avec la console, depuis un script avec dialog comme ca je cherche et j'apprends.

je suis dejà arrivé a faire ce que je voulais pour la gestion des groupes du fichier (creer, effacer, renommer) depuis la console, et je voudrais y arriver de meme pour les utilisateurs.
Ensuite je verrais pour gerer les droits des groupes et/ou utilisateurs individuellement et j'essayerais d'aller egalement ecrire dans la conf de mon serveur.

d'ailleurs j'ai prévu de proposer au nouvel utilisateur de mon serveur de pour creer son login, son mdp, pas gerer son groupe, directement en ligne.
Donc l'idée après c'est de voir pour re-utiliser ce 1er script pour l'adapter au serveur, en passant par des scripts .cgi (je crois que c'est dans ce format, mais pas sur).

Donc y a du boulot.

Et la je dois dire que toutes vos idées seront les bienvenues,...........

pour l'instant j'arrive a faire tourner mon serveur avec des utilisateurs deja identifiés et ils peuvent uploader, meme si je trouve que c'est dès que le fichier commence a etre volumineux, ca rame, mais avant de me lancer dans la modification du script que proxy m'a transmis, je voudrais deja arriver a faire ce que je veux depuis une console.
1. Pourrais-tu expliquer pourquoi, histoire que je m'instruise un peu, là j'ai du mal à comprendre...
Concretement les 2 ont le meme role. Mais les `` sont une source d'emmerdes. Deja, ` se confond avec '. Ca aide pas. Ensuite, demande-toi laquelle de ces 2 imbrications te parait la plus naturelle :
[anvil@gruyere ~]$ echo `echo \`echo \\\`echo foo\\\`\``
foo
[anvil@gruyere ~]$ echo $(echo $(echo $(echo foo)))
foo
Et ca, c'est encore facile a comprendre. L'orgie d'antislashes, franchement, ca nuit a la lisibilite. $() est la recommandation POSIX. `` est un vestige du passe. N'ecrivez plus de ``.
4 : pour forker ??? et "i=$(($i+1)) je vais essayer mais je vois pas ou est la subtilité (j'avais jamais vu ca dans un script ou tuto).
5 : merci pour l'info des double quotes (quoi que je vois pas la différence ou la subtilité).
Va falloir lire le man de ton shell, alors. Autant le 1er a peu d'interet en soi, autant le second point est crucial dans la comprehension du shell.
6 : la ca depasse mon niveau, qu'est ce que $(seq 3 100) ??? le debut de boucle et la limite, peut-être ? je vais essayer.
Et le 'info seq' aussi.
je sais que c'est deja disponible avec adduser, addgroup et le reste, meme si je ne sais pas m'en servir autrement qu'en graphique
Donc, si je comprends bien, au lieu de lire 2-3 pages simplettes, tu preferes t'engouffrer dans l'ecriture d'un programme dans un langage dans lequel tu ne fais que balbutier ?
J'espere pour toi que ne nous sommes pas en train de parler du fichier /etc/group. Car tu commettrais une grave erreur. Il ne faut jamais editer brutalement ce fichier.
[note comme ça]Anvil a une tendance un peu "directe" mais il a rarement tort ... et pis là, il a raison! lol
Bref, sinon j'avoue qu'également j'ai pas trop compris pourquoi tu t'amuses à parser un fichier alors que quelques commandes peuvent sans doute te donner les infos que tu veux.[/note comme ça]
a Anvil,

Justement, ne voulant pas toucher au /etc/group du systeme, quand j'ai installé mon serveur :
- je n'ai pas eu a configurer un user du serveur avec adduser ou dans /etc/group,
- les groupes sont gérés dans un fichier autre.

j'ai dit que l'on pouvait surement le faire avec les commandes adduser et addgroup, mais vu que les utilisateurs systemes sont completement séparés des utilisateurs virtuels, je pense que j'ai parlé trop vite encore une fois...... (je pensais surtout a un paquet qui, apres son install, avait planté tout le serveur, obligeant a une re-install, d'ou l'envie de le faire depuis une console).

Quant au fait de lire les man du shell et de sed, ok mais, j'ai beaucoup de mal a lire tout ca et surtout a le comprendre (quand c'est en anglais, merci).

Pour sed, j'ai bien lu 2 ou 3 fois le man et le info ausi mais sans trouver de proposition d'option qui m'aiderait dans ce que je veux faire (j'ai surement mal compris....)

maintenant, si les doubles quotes sont des " pourquoi on les appelles pas des guillemets ??
je sais qu'on est a l'aire de l'internationalité, mais bon l'anglais n'est pas universel......
a Anvil,

je vais d'essayer toutes tes propositions, et effectivement, c'st un petit peu plus compréhensible pour moi écrit comme ca.

Ceci étant, j'essais de mettre en place
2. cat foo|head == head foo == head < foo
et y a pas je n'y arrive pas.

j'ai essayé ca :
utilisateur=`cat "$numero_groupe" "$fichier_group" -f$i foo | head == foo == head < foo`
et ca :
utilisateur=`cat "$numero_groupe" "$fichier_group" foo | head == foo == head < foo -f$i`
et toujours rien.

pourrais-tu m'éclairer ???
@fredouille, Anvil voulait dire que cat foo | head est equivalent à head foo .... 🙂
mais bon l'anglais n'est pas universel......
Il l'est beaucoup plus que le francais en informatique.
a Anvil,

Je reconnais, je me suis emporté, désolé.................................

a proxy,

merci pour l'info, mais quand je fais :
utilisateur=`head == foo == head < foo $numero_groupe $fichier_group`
ou
utilisateur=`$numero_groupe $fichier_group head == foo == head < foo`
j'ai toujours la meme erreur :
]$ sh /home/fberard/Bureau/1
il y a 2 groupes
donner celui a afficher :
2
les utilisateurs sont :
/home/fberard/Bureau/1: line 12: foo: Aucun fichier ou répertoire de ce type
Tu n'as pas compris !!
cat foo|head == head foo == head < foo n'est pas une commande, la phrase de Anvil signifie :
que les commandes :
- cat foo|head
- head foo
- head < foo
sont équivalentes (== est un opérateur signifiant égal)
a proxy,

ok mais j'arrive pas a la faire fonctionner,

merci en tout cas pour tous ces bons coups de mains...............
Quelle commande n'arrives tu pas à faire fonctionner ?
a proxy,

l'utilisation de :
cat foo|head
ainsi que :
Code:

[anvil@gruyere ~]$ echo `echo `echo \`echo foo\```
foo
[anvil@gruyere ~]$ echo $(echo $(echo $(echo foo)))
foo
j'y suis de quelques essais avec differentes combinaisons et la je ne vois pas comment les utiliser, vu que j'ai tout le temps un message d'erreur, le meme..................
cat foo|head : affiche les 10 premières lignes du fichier foo (bien sur il faut que le fichier foo existe !!)

Quant aux echo `echo etc ... , Anvil voulait te montrer que l'ancienne syntaxe basée sur des anti-quotes devient vite galère et illisible et que la nouvelle norme POSIX $() rend le script plus lisible.

Les exemples fournis ne sont que des exemples ... Ne cherche pas à les recopier tels quels.
a proxy,

ok bien compris,

Merci a tous pour le coup de main, le script est terminé et fonctionne a merveille.....

@+++++++++++++++++++++++++