【shell脚本练习】判断用户存在和用户类型

题目

写一个脚本

1. 传递一个参数给脚本,此参数为用户名;

2. 如果用户存在,则执行如下任务

* 如果用户的id号小于500,显示其为管理员或系统用户;

* 否则,显示其为普通用户;

3. 如果用户不存在,则添加之;

解答

#!/bin/bash

username=$1

if [ "$username" = "" ]; then
    echo "please input a username"
    exit 1
fi

if id $username &> /dev/null; then
    userid=$(id -u $username)
    if [ $userid -lt 500 ];then
        echo "$username is a admin user"
    else
        echo "$username is a normal user"
    fi
else
    useradd $username
    if [ $? -eq 0 ]; then  #判断用户是否添加成功
        echo "Add user $username."
    else
        echo "Can not add $username."
    fi
fi

说明

  • id $username &> /dev/null 这里后面的重定向是把无用的输出消除

版权声明:本文为orangleliu(http://blog.csdn.net/orangleliu/)原创文章,文章转载请声明。

时间: 2024-12-23 06:59:52

【shell脚本练习】判断用户存在和用户类型的相关文章

面试笔试-脚本-1:使用shell脚本输出登录次数最多的用户

原题目: 一个文本类型的文件,里面每行存放一个登陆者的IP(某些行是重复的),写一个shell脚本输出登陆次数最多的用户. 之前刚看到这个题目时,马上没有想到一行直接解决的办法,虽然知道可以先进行排序,但是后面由于对uniq命令的参数不熟悉,所以用了比较背的办法,就是直接编写shell脚本程序来解决这个问题. 现在假设测试数据如下: 111.111.111.111 10.10.10.10 222.222.222.222 111.111.111.111 333.333.333.333 10.10.

Linux Shell脚本 几种循环语句创建用户的方法

大家好,我是孤云暮雨,今天给大家带来的是"Linux Shell脚本 几种循环语句创建用户的方法" 添加user1-user20用户 for循环: #!/bin/bash for i in {1..20} do useradd user$i echo "user$i Users to add success" done for循环(C风格): #!/bin/bash for ((i=1;i<=20;i++)) do useradd user$i &&a

Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数,需要的朋友可以参考下 $#代表了命令行的参数数量,可以看以下实例: 复制代码 代码如下: if [ $# != 1 ] ; then echo "USAGE: $0 TABNAME" echo " e.g.: $0 CDR_CALL_20040701" exit 1; f

Shell脚本---条件判断

面向过程     顺序执行     选择执行:if;case     循环执行:for;while;until   循环需有退出条件 选择执行(选择执行的前提,就是条件测试)    条件测试方式(测试条件)     bash命令测试          bash命令有命令执行状态返回值          $?:用于上一条执行的命令状态返回值          0:成功执行          1-255:失败          可以使用exit命令,在脚本中自定义脚本状态返回值,如果不定义,脚本的状

shell脚本真假判断(0为真,非0为假?或0为假,非0为真?)

在网络上,总有人说shell脚本的真假判断,有说0位真的,非0为假,但真的是这样吗? 做个实验,写个0的判断语句 执行结果是0 is true,那么我们想当然1是false了,做下测试: 然而执行的结果却大相径庭,0是ture,1也是ture 也就是说其他语言中(0为真,非0为假?或0为假,非0为真?)的理论均不成立. 那么linux是以什么来作为判断的呢 答案就是以命令执行后的状态,状态可用$?查看(echo $?显示0,表示执行成功,1表示执行失败) shell脚本真假判断(0为真,非0为假

Linux | shell脚本-比较判断和运算语句

一.简介 在我们写shell脚本的过程中,经常需要作比较判断,例如比较哪个数字大,判断文件是否存在,判断文件是否是目录,判断是否为真等操作.有时候我们还需要做运行,例如加减乘除等等,今天就来简单介绍比较表达式和运行表达式. 二.shell比较判断 1.文件状态:表达式:[ -e 文件路径 ] 有空格隔开 例如:[ -e /root ] 判断/root 是否存在(1) -e 是否存在 存在为真(2) -d 是否是目录 是目录为真(3) -f 是否是文件 是文件 为真(4) -x 是否有执行权限 有

案例九:shell脚本自动创建多个新用户,并设置密码

此脚本是用来批量创建用户并设置用户密码,在企业用非常实用. 脚本一 #!/bin/bash for name in $( seq 1 100 ) do useradd "user$name" if [ $? -eq 0 ];then echo -e "\n创建 "user$name" 成功!" fi done 添加100用户在users组,并设置密码为user 脚本二 i=1 for (1..100) do groupadd users addu

Linux | shell脚本-条件判断if和循环语句for

一.简介 上个章节中,我们学习了判断语句和运算语句.shell脚本中,这些判断语句一般都是和if.else.elif.for和while等语句一起使用. 在脚本编写中,条件判断语句常常用于多种情况的判断,符合哪一种情况就执行哪一种的命令. 二.shell条件判断语句:if 1.流程控制:if单分支结构 语法: if 条件判断:then 条件判断成功时执行的操作 ... fi 例子: 结合整数值比较-eq:检查主机是否在线 vim test1.sh运行结果:2.流程控制:if双分支结构 语法: i

Shell脚本变量判断参数命令

系统变量 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2 $? 上个命令的退出状态,或函数的返回值.成功返回0,失败返回1 $# 传递给脚本或函数的参数个数 $* 所有这些参数都被双引号引住.若一个脚本接收两个参数,$*等于$1$2 $0 正在被执行命令的名字.对于shell脚本而言,这是被激活命令的路径 [email protected] 被双引号(” “)包含时,与 $* 稍有不同.若一个脚本接收到两个参数,[email protect

Shell脚本:判断用户和用户组是否已经存在/创建用户和用户组

通常作为一个应用程序的部署脚本,开始的第一项工作是为当前应用创建一个专用(dedicated)的用户和用户组.这个脚本很简单,这里贴一个参考样本: #!/bin/sh user=test_user group=test_group #create group if not exists egrep "^$group" /etc/group >& /dev/null if [ $? -ne 0 ] then groupadd $group fi #create user i