第一个问题> /etc/group:

第一个问题> /etc/group:

我正在写 bash 脚本。当我添加用户时,通信权限被拒绝,但用户已创建。如何从 bash 中删除这个错误?

function create() {
  echo "name of group:"
  read turtles
  if [[ -n $turtles ]] && id $turtles > /etc/group 2>&1; then
    echo "This group has already exists"
    sleep $delay_time && exit
  else
    sudo groupadd $turtles && echo "Group has been added"
    sleep $delay_time
  fi
}

终端中的消息是:

./myname: line 78: /etc/group Permission denied
Group has been added

请帮我解决这个错误

答案1

groupadd手册页说:

Exit Values
The groupadd command exits with the following values:

0 success
2 invalid command syntax
3 invalid argument to option
4 GID not unique (when -o not used)
9 group name not unique
10 can't update group file

如果组名已经存在,则返回 9 (groupadd: group 'name'已经存在)

所以,你的脚本就变成了

function create() {
    echo "name of group:"
    read turtles
    sudo groupadd "$turtles" && echo "group $turtles created successfully..."
    sleep $delay_time
}

答案2

第一个问题> /etc/group

  • 您不应该直接写入/etc/group,请使用 addgroup。
  • 您不应该使用>,它会截断文件。

如果别的

else如果谓词中存在错误,这将应用于子句。例如,无法在重定向中打开文件,将导致 else 分支运行。

sleep $delay_time && exit

  • 不需要睡觉。
  • 不需要退出,直接跳到fi
  • 使用&&ifsleep失败,则exit不会运行。

turtles

  • 文学编程:变量名并不能让代码清晰。

团体名称:

  • 文学编程:对用户来说这不是一个明确的问题。

相关内容