grep
rups のソリューションのステートメントにはいくつかの欠陥があります:
例えば。 grepping
グループ admin
の場合 true
を返す場合があります (「グループあり」) グループ lpadmin
がある場合 .
grep
を修正するか -クエリ
grep -q -E "^admin:" /etc/group
または使用
if [ $(getent group admin) ]; then
echo "group exists."
else
echo "group does not exist."
fi
このスクリプトが役立つ場合があります:
read -p "enter group name: " group
if grep -q $group /etc/group
then
echo "group exists"
else
echo "group does not exist"
fi
/etc/group の grep は機能しますが、/etc/nsswitch.conf が次のものを持つマシンでのみ:
group: files
つまり、利用可能なグループを決定する際に /etc/group のみが参照されます。用途:
getent group <groupname>
より一般的な解決策として、終了ステータスを確認します。0 は「存在する」ことを意味し、ゼロ以外は「存在しない」ことを意味します。たとえば、グループ「postgres」が存在するかどうかを確認し、存在しない場合は作成します (bash シェルを想定し、新しいグループを作成できるユーザーとして実行します)。
/usr/bin/getent group postgres 2>&1 > /dev/null || /usr/sbin/groupadd postgres