Le grep
déclaration dans la solution de rups a quelques défauts :
Par exemple. grepping
pour un groupe admin
peut retourner true
("le groupe existe") lorsqu'il y a un groupe lpadmin
.
Soit corriger le grep
-requête
grep -q -E "^admin:" /etc/group
ou utilisez
if [ $(getent group admin) ]; then
echo "group exists."
else
echo "group does not exist."
fi
Ce script peut vous aider :
read -p "enter group name: " group
if grep -q $group /etc/group
then
echo "group exists"
else
echo "group does not exist"
fi
Grepping /etc/group fonctionne, mais uniquement sur une machine où /etc/nsswitch.conf a :
group: files
ce qui signifie que seul /etc/group est consulté lors de la détermination des groupes disponibles. Utiliser :
getent group <groupname>
pour une solution plus générique, vérifier l'état de sortie :0 signifie "existe", différent de zéro signifie "n'existe pas". Par exemple, pour vérifier si le groupe 'postgres' existe et le créer si ce n'est pas le cas (en supposant que bash shell s'exécute en tant qu'utilisateur capable de créer de nouveaux groupes), exécutez :
/usr/bin/getent group postgres 2>&1 > /dev/null || /usr/sbin/groupadd postgres