5.3 shell编程2
条件判断:
如果用户不存在
添加用户,给密码并显示添加成功
否则
显示如果已经存在,没有添加
bash中如何实现条件判断?
条件测试类型:
整数测试
字符测试
文件测试
条件测试的表达式:
[ expressopm ] 前后一定有空格
` expressopm `
test expression
整数比较:
-eq:测试两个整数是否相等;相等为真0比如 $A -eq $B
-ne:测试两个整数是否不等;不等,为真0,相等,假
-gt:测试一个数是否大于另一个数:大于,为真
-lt:测试一个数是否小于另一个数
-ge:大于或等于
-le:小于或等于
命令间的逻辑关系:
逻辑与: &&
第一个条件为假时,第二条件不用再判断,最终结果已经有:
第一个条件为真时,第二条件必须得判断
逻辑或: ||
id user1 &> /dev/null && echo "Hello,student."
如果用户user6不存在,就添加用户user6
! id user6 && useradd user6
id user6 || useradd user6
变量名称:只能包含字母、数字和下划线,并且不能以数字开头,不应该跟
系统中已有的环境变量重名
最好做到见名知义
nano second.sh
#!/bin/bash
LINES = 'wc -l /etc/inittab'
#echo $LINES
FINLINES = 'echo $LINES | cut -d ' ' -f1'
#echo $FINLINES
[ $FINLINES -gt 100 ] && echo "/etc/inittab is a big file."
|| echo "/etc/inittab is a small file."
如果用户存在,就显示用户已存在;否则,就添加此用户:
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 exists."
练习,写一个脚本,完成以下要求:
1 添加3个用户user1,user2,user3;但要先判断用户是否存在,
不存在而后再添加
2 添加完成后,显示一共添加了几个用户:当然,不能包括因为事先
存在而没有添加的
3 最后显示当前系统上共有多少个用户
nano adduser.sh
#!/bin/bash
! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd
--stdin user1 &> /dev/null || echo "user1 exists."
! id user2 &> /dev/null && useradd user2 && echo "user2" | passwd
--stdin user2 &> /dev/null || echo "user2 exists."
! id user3 &> /dev/null && useradd user3 && echo "user3" | passwd
--stdin user3 &> /dev/null || echo "user3 exists."
USERS = 'wc -l /etc/passwd | cut -d: -f1'
echo "$USERS users."
如果 UID为0:那么
显示为管理员
否则
显示为普通用户
NAME = user16
USERID = `id -u $NAME` (~下的反引号) 命令引用表示命令的执行结果
if[ $USERID -eq 0 ];then
echo "Admin"
else
echo "common user."
fi
反引号引用表示命令的执行结果
没有反引号表示命令的执行状态(是否成功)
if id $NAME;then
练习 写一个脚本,完成以下要求:
给定一个用户:
1 如果其UID为0,就显示此为管理员
2 否则,就显示其为普通用户
nano third.sh
#!/bin/bash
#
NAME = user1
USERID =`id -u $NAME`
[ $USERID -eq 0 ] && echo "Admin" || echo "Common user."
条件判断,控制结构:
单分支if语句
if 判断条件;then (then写下一行,分号可以省略)
statement1
statement2
...
fi
双分支的if语句:
if 判断条件;then
statement1
statement2
...
else
statement3
statement4
...
fi
nano tt.sh
#!/bin/bash
#
NAME = user1
if id $NAME &> /dev/null;then
echo "$NAME EXISTS."
else
useradd $NAME
echo $NAME | passwd --stdin $NAME &> /dev/null
echo "Add $NAME finished."
fi
练习:写一个脚本,完成以下任务
1 使用一个变量保存一个用户名
2 删除此变量中的用户,且一并删除其家目录
3 显示“用户删除完成”类的信息