if条件语法语句
单分支
if [ 条件1 ];then
动作1
动作2
动作3
fi
if [ 条件1 ]
then
动作1
动作2
动作3
fi
[ 条件1 ] && {
动作1
动作2
动作3
}
双分支
if [ 条件1 ];then
动作1
动作2
动作3
else
动作1
动作2
动作3
fi
if [ 条件1 ]
then
动作1
动作2
动作3
else
动作1
动作2
动作3
fi
[ 条件1 ] && {
动作1
动作2
动作3
} || {
动作1
动作2
动作3
}
多分支
if [ 条件1 ];then
动作1
动作2
动作3
elif [ 条件2 ];then
动作1
动作2
动作3
elif [ 条件3 ];then
动作1
动作2
动作3
else
动作1
动作2
动作3
fi
if [ 条件1 ]
then
动作1
动作2
动作3
elif [ 条件2 ]
then
动作1
动作2
动作3
elif [ 条件3 ]
then
动作1
动作2
动作3
else
动作1
动作2
动作3
fi
需求: 接收用户输入的用户名和密码进行登录。
1.根据 数据库 中的数据判断,如果用户存在则验证密码
2.如果密码错误则返回报错
3.如果密码正确,则登录成功
4.根据 数据库 中的数据判断,如果用户不存在则注册
1)输入用户名
2)输入密码
3)确认密码
5.如果密码不一致则重新输入
6.如果密码一致,则将注册用户保存到 数据库 中
扩展需求:
判断用户输入的密码,如果小于8位,则报错
判断用户输入的密码,如果没有大小写,则报错
判断用户输入的密码,如果没有数字,则报错
判断用户输入的用户名,如果用户名以数字开头,则报错
[root@web01 ~]# cat login.sh
#!/bin/bash
# File Name: __login.sh__
# Version: __v1.1__
# Author: __yjt__
# Mail: __1781811351@qq.com__
read -p '请输入你的账号:' num1
if [[ $num1 =~ ^[a-Z] ]] &>/dev/null;then
cat admin.txt |grep $num1: &>/dev/null
if [ $? -ne 0 ];then
echo '您还未创建用户,请创建用户'
read -p '请你输入想要创建的账户:' num2
if [[ $num2 =~ ^[a-Z] ]] &>/dev/null;then
read -p '请输入新密码:' num3
if [[ $num3 =~ [a-z] && $num3 =~ [0-9] && $num3 =~ [A-Z] && ${#num3} -ge 8 ]];then
read -p '请重新输入密码:' num4
if [[ $num3 == $num4 ]];then
echo '账号创建成功'
echo "$num2:$num3" >> admin.txt
echo '欢迎登录'
else
echo '密码不一致'
read -p '重新确认密码:' num4
if [[ $num3 == $num4 ]];then
echo '账号创建成功'
echo "$num2:$num3" >> admin.txt
echo '欢迎登录'
else
echo 'dd两次都不行,你还是算了吧'
fi
fi
else
echo '密码必须八位数而且带大小写和数字'
fi
else
echo '用户账号不能以数字开头'
fi
else
read -p '请输入你的密码:' num5
if [[ $num5 == `cat admin.txt |grep $num5 | awk -F ':' '{print $2}'` ]];then
echo '欢迎登录'
else
echo '密码错误,密码带有八位数而且带大小写和数字'
read -p '请重新输入密码:' num6
if [[ $num6 == `cat admin.txt |grep $num6 | awk -F ':' '{print $2}'` ]];then
echo '欢迎登录'
else
echo '密码错误,密码带有八位数而且带大小写和数字'
fi
fi
fi
else
echo '用户账号不能以数字开头'
fi
完整作业
判断用户是否存在,bug,密码和要注册的用户名一致的情况下,就出问题
程序逻辑:
- 登录
输入用户名
输入密码
- 判断用户是否存在
如果用户存在,则验证密码
如果用户不存在,则跳转到注册页面
- 注册页面
需要输入用户名,也需要判断是否存在
如果存在,重新输入用户名
输入注册密码和确认密码
$pass1 == $pass2
$pass1 != $pass2
两次密码不一致,重新输入密码
两次密码一致,将用户写入数据库,跳转到登录页面
#!/bin/bash
read -p '请输入一个密码: ' pass
if [ ${#pass} -lt 8 ];then
echo '密码至少8位'
elif [[ $pass =~ ' ' ]];then
echo '密码中不能包含空格'
elif [[ $pass =~ [0-9] ]] && [[ $pass =~ [a-z] ]] && [[ $pass =~ [A-Z] ]] ;then
echo '注册成功'
else
echo '密码要包含数字,大小写字母'
fi
###### 作业代码
[root@m01 ~]# cat login.sh
#!/bin/bash
. /etc/init.d/functions
user_data_file="/root/user_data.txt"
[ ! -f $user_data_file ] && {
touch $user_data_file
}
login_page (){
cat <<EOF
+------------------+
| 欢迎来到登录界面 |
+------------------+
EOF
}
register_page (){
cat <<EOF
+------------------+
| 欢迎来到注册界面 |
+------------------+
EOF
}
clear
login_page
read -p '用户名: ' user_name
read -p '密码: ' user_pass
[ ${#user_name} -eq 0 -o ${#user_pass} -eq 0 ] && {
echo -e "\e[1;31m Error:\e[0m \e[5;31m用户名和密码不能为空\e[0m"
exit 1
}
user_exists=`awk '{print $1}' $user_data_file | grep -w "$user_name"|wc -l &>/dev/null`
[ $user_exists -eq 0 ] && {
pass=`grep -w "$user_name" $user_data_file |awk '{print $2}'`
[ "$pass" == "$user_pass" ] && {
figlet welcome
action "$user_name login accessful" /bin/true
} || {
echo -e "\n--------- 登录失败 --------"
action "$user_name password is missing" /bin/false
exit 1
}
} || {
echo -e "\n--------- 登录失败 --------"
action "$user_name not exists" /bin/false
clear
register_page
read -p "请输入注册用户名:" register_name
read -p "请输入注册密码:" register_pass1
read -p "请确认注册密码:" register_pass2
grep -w "$register_name" $user_data_file &>/dev/null
[ $? -eq 0 ] && {
echo -e "\n--------- 注册失败 --------"
echo -e "\e[1;31m Error:\e[0m 用户 \e[5;31m[${register_name}]\e[0m 已存在"
} || {
[ $register_pass1 == $register_pass2 ] && {
echo "$register_name $register_pass1" >> $user_data_file
awk '{print $1}' $user_data_file | grep -w "$register_name" &>/dev/null
[ $? -eq 0 ] && {
echo -e "user \e[5;32m[$register_name]\e[0m register successful"
read -p '用户名: ' user_name
read -p '密码: ' user_pass
pass=`grep -w "$user_name" $user_data_file |awk '{print $2}'`
[ "$pass" == "$user_pass" ] && {
figlet welcome
action "$user_name login accessful" /bin/true
} || {
echo -e "\n--------- 登录失败 --------"
action "$user_name password is missing" /bin/false
exit 1
}
}
} || {
echo -e "\nthe password not match"
echo -e "\n--------- 重新确认密码 --------"
read -p "请输入注册密码:" register_pass1
read -p "请确认注册密码:" register_pass2
[ $register_pass1 == $register_pass2 ] && {
echo "$register_name $register_pass1" >> $user_data_file
}
}
}
}