练习:写一个脚本,完成以下任务
1、添加5个用户,user1,……,user5
2、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息
3、每个用户添加完成后,都要显示用户某某已经成功添加
!id user1 &>/etc/null && useradd user1 && echo "user1 " | passwd --stdin user1 &> /etc/null && echo "user1 add successfully" || echo "user1 exists"
如果不存在user1就添加user1用户,将user1用户名发送给passwd,显示user用户添加成功
否则若存在user1则显示user1已存在
解析:
条件判断:
如果用户不存在
添加用户,给密码并显示添加成功
否则
显示如果已经存在,没有添加
bash中如何实现条件判断?
1、条件测试类型:
整数测试
字符测试
文件测试
条件测试表达式:
[ expression ]
[ [ expression ] ]
test expression
整数比较:
-eq:测试两个整数是否相等,比如$A -eq $B
-ne:测试两个整数是否不等:不等,为真;相等,为假
-gt:测试一个数是否大于另一个数:大于,为真;否则,为假
-lt:测试一个数是否小于另一个数:小于,为真;否则,为假
-ge:大于或等于
-ls:小于或等于
命令的间逻辑关系:
逻辑与:&&
第一个条件为假时,第二条件不用再判断,最终结果已经有
第一个条件为真时,第二条件还
逻辑或:||
如果 用户user6不存在,就添加用户user6
! id user6 && useradd user6
变量名称:1、只能包含字母、数字和下划线,并且不能数字开头
2、不应该跟系统中已有的环境变量重名
3、最好见名知义
如果用户存在,就显示用户已存在;否则,就添加此用户
id user1 && echo "user1 exists." || useradd user1
如果用户不存在,就添加;否则,显示其已经存在
! id user1 && useradd user1 ||echo "user1 exists."
如果用户不存在,就添加并且给密码;否则,显示其已经存在
! id user1 && useradd user1 && echo "user1" | passwd --stdin user1 || echo "user1 exits"
练习,写一个脚本,完成以下要求:
1、添加3个用户user1,user2,user3;但要先判断用户是否存在
2、添加完成后,显示一共添加了几个用户;当然不能包括因为事先存在而没有添加的
3、最后显示当前系统上共有多少个用户
#!/bin/bash
num=0
! id user1 &>/etc/null && useradd user1 && echo "user1" | passwd --stdin user &> /etc/null && echo "useradd user1 successfully" || echo "user1 exists"
USERS=`wc -l -/etc/passwd`
echo "$USERS users"
练习,写一个脚本,完成以下要求:
给定一个用户:
1、如果其UID为0,就显示此为管理员
2、否则,就显示其为普通用户
解析:
条件判断,控制结构:
单分支if语句
if 判断条件;then
statement1
statement2
…
fi
双分支的if语句:
if 判断条件;
then
statement1
statement2
…
else
statement3
statement4
…
fi
1
!!!数值比较一定要加[]
2、用if来做
如果UID为0;那么
显示为管理员
否则
显示为普通用户
练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少个这类用户;否则,就显示没有这类用户;
#!/bin/bash
#
grep "\<bash$" /etc/passwd &> /dev/null
RETVAL=$? !!!!$?:上一个命令的退出状态或函数的返回值
if [ $RETVAL -eq 0] ; then
USERS=`grep "\<bash$" /etc/passwd | wc -l`
echo "The shells of $USERS users is bash."
else
echo "No such user."
fi
练习:写一个脚本
判断当前系统上是否用户的默认shell为bash;
如果有,就显示其中一个的用户名,否则,就显示没有这类用户;
#!/bin/bash
AUSER=`grep "bash$" /etc/passwd | head -1 | cut -d: -f1`
REVTAL=$?
if [ $REVTAL -eq 0 ]; then
echo "$AUSER is one of such users"
else
echo "no such user"
fi
练习:写一个脚本
给定一个文件,比如/etc/inittab
判断这个文件中是否有空白行
如果有,则显示其空白行数;否则,显示没有空白行
练习:写一个脚本
给定一个用户,判断其UID与GID是否一样
如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”.
#!/bin/bash
USERNAME=user1
USERID=` id -u $USERNAME`
GROUPID=`id -g $USERNAME`
if [ $USERID -eq $GROUPID ] ;then
echo "Good guy."
else
echo "Bad guy."
fi
进一步要求,不使用id命令获得其id号
练习:写一个脚本
给定一个用户,获取 其密码警告期限;
而后判断用户最近一次修改密码时间距今天是否已经小于警告期限;
提示:计算方法,最长使用期限减去已经使用的天数即为剩余使用期限;
如果小于,则显示"Warning";否则,就显示“OK”。
shell中如何进行算术运算:
A=3
B=6
1、let算术运算表达式
let C=$A+$B
2、$[算术运算表达式]
C=$[$A+B]
3、$((算术运算表达式))
C=$(($A+$B))
4、expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引入
C=` expr $A + $B `
练习:写一个脚本,完成以下任务
1、使用一个变量保存一个用户名
2、删除此变量中的用户,且一并删除其家目录
3、显示“用户删除完成”类的信息