Lo grep
affermazione nella soluzione di rups ha alcuni difetti:
Per esempio. grepping
per un gruppo admin
potrebbe restituire true
("il gruppo esiste") quando c'è un gruppo lpadmin
.
Correggi il grep
-query
grep -q -E "^admin:" /etc/group
o usa
if [ $(getent group admin) ]; then
echo "group exists."
else
echo "group does not exist."
fi
Questo script può aiutarti:
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 funziona, ma solo su una macchina in cui /etc/nsswitch.conf ha:
group: files
ciò significa che solo /etc/group viene consultato quando si determinano i gruppi disponibili. Usa:
getent group <groupname>
per una soluzione più generica, controllare lo stato di uscita:0 significa "esiste", diverso da zero significa "non esiste". Ad esempio, per verificare se esiste il gruppo 'postgres' e crearlo in caso contrario (presupponendo che la shell bash funzioni come utente in grado di creare nuovi gruppi) eseguire:
/usr/bin/getent group postgres 2>&1 > /dev/null || /usr/sbin/groupadd postgres