You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Bash脚本习题求解:统计各可用shell对应的默认用户数量

问题解决说明

原有代码问题

  • 仅匹配了当前用户的$SHELL,无法统计系统中所有用户的默认shell
  • 使用了题目要求外的awk命令,不符合规则
  • 统计结果变量在循环外赋值,只会输出第一条统计结果,无法遍历所有shell的统计数据
  • 未处理示例要求的数量为0的shell输出场景

正确实现

仅使用题目允许的基础命令,实现代码如下:

# 提取/etc/passwd中所有用户的默认shell字段
all_shells=$(cat /etc/passwd | sed 's/.*://')
# 遍历目标shell逐个统计数量
for sh in /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash; do
    cnt=$(echo "$all_shells" | grep -xc "$sh")
    echo "$cnt users have for shell $sh"
done

实现逻辑说明

  • 用sed 's/.*://'删除每行最后一个冒号前的所有内容,直接提取出所有用户的默认shell字段
  • 遍历题目示例要求输出的4个shell路径,用grep -xc做整行精确匹配,直接输出匹配到的行数作为用户数
  • 即使匹配数量为0也会正常输出,完全符合示例要求的格式

内容的提问来源于stack exchange,提问作者FelonVLAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:45:00