我目前正在编写一个脚本,该脚本将允许我通过用户输入添加组。 我在脚本的部分,用户在其中键入组名,并将其与/etc/group 进行比较,并让用户知道是否需要添加它。 我已经针对一个我知道事实不在我的系统上的组对此进行了测试,它只读取我循环中的第一个语句。 有人可以告诉我哪里出错了吗?
#!/bin/bash
echo "This script will allow you to enter Groups and Users needed for new builds"
echo
echo
echo
echo
# Setting Variables for Group Section
Group=`cat /etc/group |grep "$group"`
echo -n "Please enter the group name that you would like to search for..press [ENTER] when done: " # Request User input to obtain group name
read group
echo "Searching /etc/group to see if the group "$group" exists." # Checking to see if the group exists
if [ "$group" != "$Group" ]; then
echo "The group already exist. Nothing more to do buddy."
else
echo "We gotta add this one fella..carry on."
如果你使用的是 Linux,因此有可用的getent
:
printf "Group to search for: "
read -r group
if getent group "$group" >/dev/null 2>&1; then
echo "$group exists"
else
echo "$group does not exist"
fi
使用 getent
使用标准 C 库进行目录查找。因此,它不仅对/etc/passwd
,/etc/group
等都有好处,而且对活动目录,LDAP,NIS,YP等目录服务也有好处。
以下是您的操作:
- 搜索组名称
- 输入要搜索的组名称
可悲的是,在输入组名称之前,您无法搜索它,因为这将违反因果关系和我们所知道的时空定律。在知道要搜索的内容后尝试搜索:
echo -n "Please enter the group name that you would like to search for..press [ENTER] when done: " # Request User input to obtain group name
read group
if cat /etc/group | grep -q "^$group:"
then
echo "The group already exist. Nothing more to do buddy."
fi