linux分支结构,实验四 Shell脚本中的分支结构

实验四 Shell脚本中的分支结构

#实验内容:

###一、if分支结构

•if结构是最基本的分支结构类型。

•使用if结构时,只有满足某个条件才会执行某些语句,而在不满足此条件的情况下执行其他语句。

if -then结构 - if -then语句的基本格式如下: if [ 条件判断式 ];then 程序 fi 或者: if [ 条件判断式 ] then 程序 fi - 注意事项: * Shell中的if语句使用fi结尾,不同于一般语句的大括号结尾; * [ 条件判断式 ]就是使用test命令判断,所以[、]和条件判断式之间必须有空格; * then后面跟符合条件执行的程序,可以放在[]之后,用;分割,也可以换行写入,不需要;分割。

例一:

if -then结构使用

echo 判断3是否小于5

if [ 3 -le 5 ]

then

echo 3小于5

fi

echo

echo 判断5是否小于3

if [ 5 -le 3 ]

then

echo 5小于3

fi

例二:

判断登录的用户是否为root

test=$(env | grep "USER" | cut -d "=" -f2)

echo $test

if [ "$test" == ybcarry ]

then

echo "Current user is root."

fi

例三: 查看自己系统根分区的分区号:

分区号

统计根分区使用率

rate=$(df -h | grep "/dev/sda1" | awk '{print $5}' | cut -d "%" -f1)

echo $rate

if [ $rate -ge 80 ]

then

echo "Warning! /dev/sda1 is full!!!"

fi

if -then -else结构 - if -then -else语句的基本格式如下: if [ 条件判断式 ] then 条件成立时,执行的程序 else 条件不成立时,执行的程序 fi

例四:

if -then -else结构使用

echo 判断3是否小于5

if [ 3 -le 5 ]

then

echo 3小于5

else

echo 3大于5

fi

echo

echo 判断5是否小于3

if [ 5 -le 3 ]

then

echo 5小于3

else

echo 5大于3

fi

二、嵌套结构

•嵌套结构是指在某个结构中还存在该结构,从而形成该结构的嵌套使用。

•if -then结构的嵌套基本形式如下:if [ 条件判断式1 ]

then

if [ 条件判断式2 ]

then

程序1

fi

程序2

fi

例一:

if -then嵌套结构使用

echo 判断3和5的关系

if [ 3 -le 5 ]

then

if [ 3 -eq 5 ] -eq 等于

then

echo 3等于5

fi

if [ 3 -ge 5 ] -ge 不小于

then

echo 3大于5

fi

echo 3小于5

fi

赋予可执行权限后执行脚本,结果如下:

if -elif - else结构的嵌套基本形式如下:

if [ 条件判断式1 ]

then

程序1

elif [ 条件判断式2 ]

then

程序2

else

程序3

fi

if -elif - else

例二:

if -elif - else嵌套结构使用

echo 判断3和5的关系

if [ 3 -le 5 ]

then

echo 3小于5

elif [ 3 -eq 5 ]

then

echo 3等于5

else

echo 3大于5

fi

赋予可执行权限后执行脚本,结果如下:例三:

•下面用所学内容来写一个简易计算器:

◦设计思路:a.有没有输入内容

b.判断输入的是否为数字

c.判断输入的运算符

d.执行运算操作

◦先自己思考,参考代码如下:

字符界面加减乘除计算器

通过read命令接收要计算的数值,赋予变量num1和num2

read -t 30 -p "Please input num1: " num1

read -t 30 -p "Please input num2: " num2

通过read命令接收运算符,赋予变量op

read -t 30 -p "Please input operator: " op

判断num1、num2和op不为空

if [ -n "$num1" -a -n "$num2" -a -n "$op" ]

then

定义test1和test2,把test1的值置为空,如果替换成功,证明num1为数值,test2也如此

test1=$(echo $nm1 | sed 's/[0-9]//g')

test2=$(echo $nm2 | sed 's/[0-9]//g')

判断num1和num2是否为数值

if [ -z "$test1" -a -z "$test2" ]

then

判断运算符

加法运算

if [ "$op" == '+' ]

then

result=$(($num1 + $num2))

减法运算

elif [ "$op" == '-' ]

then

result=$(($num1 - $num2))

乘法运算

elif [ "$op" == '*' ]

then

result=$(($num1 * $num2))

除法运算

elif [ "$op" == '/' ]

then

result=$(($num1 / $num2))

else

不匹配,输出提示,退出程序,返回错误代码10

echo "Please input a valid symbol !"

exit 10

fi

else

test1和test2不是数值,输出提示,退出程序,返回错误代码11

echo "Please input a valid value !"

exit 11

fi

else

test1和test2为空,输出提示,退出程序,返回错误代码12

echo "Please input a value !"

exit 12

fi

输出结果

echo "$num1 $op $num2 = $result"

赋予可执行权限后执行脚本,结果如下:

思考题: 对上述计算器代码作出改进

###三、case多条件分支结构

•if多分支条件语句与case多条件分支条件语句的区别:

case语句只能判断一种条件关系,if语句可以判断多种条件关系。

case结构基本格式如下:

case 变量 in

值1)

程序1;;

值2)

程序2;;

...省略其他分支...

*)

程序3;;

esac

例一:case结构的使用

echo -n 输入一个正整数:

read num

case $num in

1)echo 输入的数值为1;;

2)echo 输入的数值为2;;

3)echo 输入的数值为3;;

4)echo 输入的数值为4;;

5)echo 输入的数值为5;;

*)echo 输入的数值大于5;;

esac

echo 结束

赋予可执行权限后执行脚本,结果如下:

###四、select命令的使用

case多条件分支条件语句与select命令的区别:case结构需要提前输入用户的操作方式然后匹配操作,select命令可以自动获取用户输入并自动根据用户的输入进行处理。

•select命令基本格式如下:select 变量 in 变量列表

do

命令done

例一:select命令的使用

select choose in C C++ C# Java Python Swift Shell Other

do

break

done

echo 你喜欢的是 $choose

赋予可执行权限后执行脚本,结果如下:

select命令可以循环获取用户的输入,但是在第二次以后就不再显示菜单,因此一般不用select的循环特性。

#实验代码和截图:

acd3067891f4c05b049cbb7cb5172d04.png

df6c9e079c9c7c4a043b74136bbc828e.png

caf5cdac2a7f15f59f996208f184eade.png

474721e198497e389d636d2f32c65ac8.png

#实验心得:

做实验室不要自己一个人埋头做自己的,多和别人交流,会发现自己的很多不足,还能取长补短。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值