字符串 Bash 脚本,如果 then 语句失败



我目前正在编写一个脚本,该脚本将允许我通过用户输入添加组。 我在脚本的部分,用户在其中键入组名,并将其与/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等目录服务也有好处。

以下是您的操作:

  1. 搜索组名称
  2. 输入要搜索的组名称

可悲的是,在输入组名称之前,您无法搜索它,因为这将违反因果关系和我们所知道的时空定律。在知道要搜索的内容后尝试搜索:

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

相关内容

  • 没有找到相关文章

最新更新