Der grep
Aussage in der Lösung von rups hat einige Fehler:
Z.B. grepping
für eine Gruppe admin
kann true
zurückgeben ("Gruppe existiert"), wenn es eine Gruppe lpadmin
gibt .
Reparieren Sie entweder grep
-Abfrage
grep -q -E "^admin:" /etc/group
oder verwenden Sie
if [ $(getent group admin) ]; then
echo "group exists."
else
echo "group does not exist."
fi
Dieses Skript kann Ihnen helfen:
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 funktioniert, aber nur auf einem Rechner, auf dem /etc/nsswitch.conf Folgendes hat:
group: files
Das bedeutet, dass nur /etc/group bei der Bestimmung verfügbarer Gruppen herangezogen wird. Verwendung:
getent group <groupname>
Für eine allgemeinere Lösung prüfen Sie den Exit-Status:0 bedeutet "existiert", Nicht-Null bedeutet "existiert nicht". Um beispielsweise zu prüfen, ob die Gruppe „postgres“ existiert, und sie zu erstellen, wenn dies nicht der Fall ist (unter der Annahme, dass die Bash-Shell als Benutzer ausgeführt wird, der neue Gruppen erstellen kann), führen Sie Folgendes aus:
/usr/bin/getent group postgres 2>&1 > /dev/null || /usr/sbin/groupadd postgres