我正在写 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
- 文学编程:变量名并不能让代码清晰。
团体名称:
- 文学编程:对用户来说这不是一个明确的问题。