我是 Linux 的新手,我正在尝试创建一个简单的程序来检查用户是否存在,如果存在 - 退出终端,如果不存在 - 创建它。我想我已经完成了除退出终端之外的所有操作。
到目前为止,这是我的代码:
#!/bin/bash
user_name=newUser
if [ $(getent passwd $user_name) ]
then
echo "User $user_name already exists!"
exit
else
echo "The user $user_name doesn't exist and will be added"
sudo useradd -d /home/mint/newUser $user_name
fi
编辑:正如我所说,我是 Linux 新手。有人可以编辑我的代码并发布它,我需要将它添加到脚本中,也许我可以用 while 函数关闭它?
最佳答案
exit
命令只是退出当前脚本。如果您想退出终端,您需要退出
(或以其他方式终止)正在该终端中运行的程序。
实现此目的的一种常见方法是让想要退出
的进程作为交互式 shell 中的函数运行。
add_user () { /path/to/your/script "$@" || exit; }
不过,在这种情况下,我只是建议您保持脚本原样,并将其留给用户来决定他们是否要关闭终端。
顺便说一句,构造
if [ $(command) ]
如果 command
的输出是非空字符串,则为真。从 command
检查退出代码的正确方法很简单
if command
如果您不希望调用用户看到来自 command
的任何输出,则可能使用输出重定向。
上面的函数还要求您的脚本以显式错误退出;可能将其更改为 exit 1
以将错误情况显式传达给调用者。
#!/bin/bash
# First parameter is name of user to add
user_name=$1
# Quote variable; examine exit code
if getent passwd "$user_name" >/dev/null 2>&1
then
# Notice addition of script name and redirect to stderr
echo "$0: User $user_name already exists!" >&2
# Explicitly exit with nonzero exit code
exit 1
else
# script name & redirect as above
echo "$0: The user $user_name doesn't exist and will be added" >&2
# Quote argument
sudo useradd -d /home/mint/newUser "$user_name"
fi
关于Linux 退出命令什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53594581/