Lister les groupes utilisateurs un par un verticalement

xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,



Pour un script j'ai besoin de lister les groupes des utiliateurs de /etc/group
Mais je ne comprend pas pourquoi avec une fonction je ne peut pas y afficher verticalement ?

1/ Qand je fait ceci sans fonction
for i in 'cat /etc/group | fgrep x:50  | cut -d: -f1'
do
    echo "$i"
done

le résultat s'affiche verticalement un par un
[root@localhost laurent]# bash /home/laurent/bash/Installer-un-partage-public-mutli-utilisateurs.sh
nathalie
laurent
[root@localhost laurent]#




2/ Qand je fait ceci avec une fonction
groupe_users_vertical ()
{
for i in 'cat /etc/group | fgrep x:50  | cut -d: -f1'
do
    echo "$i"
done
}
echo ""
echo $(groupe_users_vertical)

le résultat s'affiche horizontalement
[root@localhost laurent]# bash /home/laurent/bash/Installer-un-partage-public-mutli-utilisateurs.sh
nathalie laurent
[root@localhost laurent]#



2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Pourquoi "echo" (echo $(groupe_users_vertical)) ???

groupe_users_vertical ()
{
for i in 'cat /etc/group | fgrep x:50  | cut -d: -f1'
do
    echo "$i"
done
}
echo ""
groupe_users_vertical


Et pourquoi une boucle for ?

groupe_users_vertical ()
{
fgrep 'x:50' /etc/group | cut -d: -f1
}
echo ""
groupe_users_vertical
0
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
Bonsoir,

echo c'est pour vérifier à l'affichage si tout est correct, sinon il va m'afficher erreur fichier non trouvé, mais je doit ajouter chaque utilisateur
# adduser $(groupe_users_vertical) <chemin du partage reseau
Es-ce correct comme ceci pour ajouter chaque utilisateur
Merci
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Re-

echo c'est pour vérifier à l'affichage si tout est correct
echo affiche du texte ou le contenu d'une variable, mais on ne l'emploie pas pour afficher le résultat d'une commande ou d'une fonction, par défaut celles-ci affichent leur résultat sur la sortie standard en règle générale.


mais je doit ajouter chaque utilisateur
# adduser $(groupe_users_vertical) <chemin du partage reseau

Tu ne peux pas non plus ajouter tous tes utilisateurs en même temps avec la commande "adduser", tu dois le faire un par un, donc inutile de récupérer ta liste auparavant, ou bien si, à condition de parser chaque élément de cette liste un par un, mais là ça fait redondance, autant tout faire d'un coup.

Un truc du genre devrait le faire :

while read nom
do
adduser "${nom}" options
done < $(fgrep 'x:50' /etc/group | cut -d: -f1)

A tester avant en rajoutant un "echo" devant la commande "adduser", hein ?
0