1.5 shell脚本编程-分支结构if分支语句,多分支
useradd //创建一一个用户
//用户的信息会写到/etc/passwd
//同时会生成以此用户名命名的家且录 在/home创建
从键盘读取用户输入的密码信息,验证输入的密码是否为123456,
如果输入正确,显示密码正确,如果错误,显示密码错误。
ssh IP地址
vim passwd.sh
#!/bin/bash
read -p "请输入密码:" passwd
if test $passwd = "123456" //字符串建议用双引号引起来
if [ $passwd = "123456" ] //用中括号写测试语句
then
echo "passwd is OK"
fi
解决输入的密码信息和已有的信息做匹配的信息:
使用test测试:
文件属性测试
字符串测试
算数测试
命令格式:
test 测试语句
[ 测试语句 ] //括号两边要有空格
文件属性测试
-e 测试文件存在为真
-f 测试文件存在为真且是一个常规文件
-d 测试文件仔在为真且是一个目录
-c 测试文件存在且特殊字符文件为真
-b 测试文件存在且特殊块为真
-g 测试文件存在为真且是一个常规文件
-u 测试文件存在且设置了ugid位为真
-r 测试文件存在且可读为真
-w 测试文件存在且可写为真
-x 测试文件存在且可执行为真
-s 测试文件存在且不为空为真
逻辑与或逻辑或:
&& 逻辑与
|| 逻辑或
true 为真
false 为假
true && false --> false
当第一个添加为真时,返回第二个条件 false
true && true --> true
false && false --> false
当一个条件为假时,返回第一个条件
//两者都为真结果为真,
//有一个为假,结果为假
true || false --> true
true || true --> true
false || false --> false
//两者都为假结果为假,
//有一个为真,结果为假
&& 遇假停并返回, 没有返回最后一个 || 遇真停,并返回,没有最后一个
test -e /root/a. txt && echo “a. txt is 0K”
a. txt is 0K
#test -e /root/b. txt && echo “b. txt is 0K”
#test -e /root/b. txt && echo “b. txt is 0K”||echo “b. txt is not 0K”
b. txt is not 0K
字符串测试:
-z 为空为真
-n 不为空为真
= 相同为真
!= 不相同为真
< 字典排名在前为真
字典排名在后为真
hi > nihao 真
if test -Z $username
then
echo"请输入密码:"
else
执行密码不为空的语句
fi
if test -n $username
then
执行密码不为空的语句
else
echo"请输入密码:"
fi
算术测试的操作:
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
单分支
if 测试的语句或命令
then
执行语句
fi
双分支:
if 测试的语句或命令
then
执行语句1
else
执行语句2
fi
多分支:
if 测试的语句或命令
then
执行语句1
elif
then
执行语句2
elif
then
执行语句3
elif
then
执行语句4
else
执行语句5
fi
脚本实例:
判断用户输入的数值是正数还是负数:
知识点;
算数测试操作
if test -
then
执行语句1
elif
作业
判断输入的成绩在任么档位;
0-59 不及格
60-79 良
80-89 优
90-99 优+
100 满分
vim test.sh
#!/bin/bash
read -p “Please enter a number”: number
if [ $number -eq 100 ] ;then
echo “The grade is A”
elif [ $number -ge 90 -a $number -le 99 ] ;then
echo “The grade is B”
elif [ $number -ge 80 -a $number -le 89 ] ;then
echo “The grade is C”
elif [ $number -ge 70 -a $number -le 79 ] ;then
echo “The grade is D”
elif [ $number -le 59 -a $number -ge 0 ] ;then
echo “The grade is Z”
elif [ $number -ge 60 -a $number -le 69 ] ; then
echo “The grade is E”
else
echo “you enter nothing,please enter a number!”
fi