首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有Exit Code语句的If语句

带有Exit Code语句的If语句
EN

Unix & Linux用户
提问于 2020-04-09 18:45:15
回答 1查看 1K关注 0票数 -1

我是Linux/Unix的初学者。这是我的任务,太长了,不能在这里发布所有东西:https://imgur.com/a/kqxssd1

Here是我有的逻辑:

此代码将检查用户是否输入了参数。我不知道该把什么放在其他地方。我们从未讨论过我从其他用户那里学到的哪个语句,因此它不会被使用。只是基本的命令--这不是一个超级高级的任务。

代码语言:javascript
运行
复制
if [ $# -ne 1 ]; then
        echo Please enter a single, valid user id: 
        read userid
else
        userid=$1
        **what goes here?**
fi

要显示用户的全名(即),这是我编写和测试的代码:

代码语言:javascript
运行
复制
grep "$userid" /etc/passwd | cut -d: -f5 | sort | sed 's/^\(.*\), \(.*\)$/\2 \1/'

Determine用户是否登录:

如果用户未登录(将返回退出代码1):who | grep $userid

  1. 然后用1.的代码显示grep "$userid" /etc/passwd | cut -d: -f5 | sort | sed 's/^\(.*\), \(.*\)$/\2 \1/'echo is NOT currently logged on then end脚本

如果用户登录(将返回退出代码0):who | grep $userid

  1. 然后显示grep "$userid" /etc/passwd | cut -d: -f5 | sort | sed 's/^\(.*\), \(.*\)$/\2 \1/'echo is currently logged on <#>then end脚本,代码为0。

Determining用户是否有效:

如果用户无效(将返回退出代码1):grep $userid /etc/passwd

  1. 然后它应该显示echo "The user you entered, $userid is not a valid user on this system."

如果用户有效(将返回退出代码0):grep $userid /etc/passwd

我怎么写这个剧本?完整的结构是什么?我被困在结构/装置上了。

EN

回答 1

Unix & Linux用户

发布于 2020-04-10 20:27:51

由于这看起来像是一项任务,我只会给您一些工具和一些提示:

  1. 如果没有给脚本任何参数,那么$1 (脚本的第一个参数)将为空。您可以使用[[ -z $1 ]]对此进行测试。如果要显示太多参数的错误,请使用[[ $# -eq 1 ]]测试参数的数量(单个参数为真)。
  2. gentent passwd "$username"命令可用于获取用户$usernamepasswd条目。如果用户不存在,该命令将在非零退出状态下失败。这意味着您可以使用if ! getent passwd "$username" >/dev/null; then ...; fi对不存在的用户$username作出反应。
  3. 用户的passwd条目的第五个字段通常包含用户的全名(实际上不能保证它将以“姓氏”的形式出现)。该条目在结尾处可能有额外的逗号,您必须删除。您可以使用getent passwd "$username"在第五个字段中解析cut -d: -f 5的输出,然后用name=${name%%,*}从第一个逗号中删除。在某些系统中,用户的全名可能包含一个&字符。在这些系统上,这个&字符应该替换为用户名(以便用户operator的名称System &变为System operator)。我不确定Linux通常会这样做,但这可以用name=${name/&/$username}来完成。
  4. who实用程序输出当前登录的用户列表。若要将$username与此匹配,请使用grep -e "^$username\>"\>与单词的结尾相匹配,因此在查找或anton时不匹配antonygrep -qif语句中很有用。

这遵循代码结构:

  1. 检查和处理无效参数(缺少: read;太多:退出或先使用)。一条if语句。
  2. 检查并处理无效用户名。一条if语句。
  3. 获取用户的全名。变量赋值(S)和命令替换。
  4. 检查用户是否登录(并输出)。一个if语句,可能带有一个else分支。

我在这个脚本中没有看到一个循环,所以它将是许多if-statements和变量赋值。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/579032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档