shell流程控制之多分支if语句

1.格式

if [ 条件判断式1 ];then
	当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ];then
	当条件判断式2成立时,执行程序2
........
else
	当所有条件都不成立时,最后执行此程序
fi

2.练习5:字符界面加减乘除的计算器

思路

1.有没有输入内容
2.判断输入的内容是不是数值
3.判断输入的运算符
4.执行运算符操作

脚本

[root@catyuan ~]# vim if5.sh
#!/bin/bash
##字符界面加减乘除计算器
read -t 30 -p "please input num1:" num1
read -t 30 -p "please input num2:" num2 #通过read命令接受要计算的值,并赋予变量num1,num2
read -t 30 -p "please input a operator:" ope    #通过read命令接受要计算的符号,并赋予变量ope
if [ -n "$num1" -a -n "$num2" -a -n "$ope" ];then       #第一层判断,判断num1和num2中都有值
        test1=$(echo $num1 | sed 's/[0-9]//g')  #定义变量test1和test2的值为$(命令)的结果
        test2=$(echo $num2 | sed 's/[0-9]//g')  #sed命令是把变量test1的值替换为空。如果能替换为空,证明num1的值为数字

        if [ -z "$test1" -a -z "$test2" ];then  #第二层判断,用来判断test1与test2为数值,如果test1和test2的值为空,则是数
字
                if [ "$ope" == '+' ];then       #第三次判断用来确认运算符,测试$ope中是什么运算符
                        sum=$(($num1 + $num2))
                elif [ "$poe" == '-' ];then
                        sum=$(($num1 - $num2))
                elif [ "$poe" == '*' ];then
                        sum=$(($num1 * $num2))
                elif [ "$poe" == '/' ];then
                        sum=$(($num1 / $num2))
                else
                        echo "please input + | - | * | /"
                        exit 10 #如果运算符不匹配,返回错误代码10
                fi
        else
                echo "please enter a valid value"       #如果num1和num2不为空,说明输入的num1和num2不是数字,则提示输入有
效的数值
                exit 11 #并退出程序,返回错误代码11
        fi
else
        echo "please input"     
        exit 12
fi

echo "$num1 $ope $num2 : $sum"  #输出数值运算结果

[root@catyuan ~]# chmod 755 if5.sh 
[root@catyuan ~]# ./if5.sh
please input num1:2
please input num2:3
please input a operator:+
2 + 3 = 5
[root@catyuan ~]# ./if5.sh 
please input num1:a
please input num2:s
please input a operator:+
please enter a valid value
[root@catyuan ~]# ./if5.sh 
please input num1:1
please input num2:2
please input a operator:?
please input + | - | * | /

3. 练习6:判断用户输入的是什么文件

脚本

[root@catyuan ~]# vim if6.sh
#!/bin/bash    
#判断用户输入的是什么文件

read -p "please input a filename:" file #接受键盘输入,并赋予变量file

if [ -z "$file" ];then  #判断file变量是否为空
        echo "error,please input a filename"
        exit 1

elif [ ! -e $file ];then        #判断file的值是否存在
        echo "your input is not a file" 
        exit 2

elif  [ -f "$file" ];then       #判断file的值是否为普通文件
        echo "$file is a regulare file"

elif [ -d "$file" ];then        #判断file的值是否为目录文件
        echo "$file is a directory"

else
        echo "$file ia an other file"
fi

测试脚本

[root@catyuan ~]# chmod 755 if6.sh 
[root@catyuan ~]# ./if6.sh 
please input a filename:/
/ is a directory
[root@catyuan ~]# ./if6.sh 
please input a filename:sa
your input is not a file
[root@catyuan ~]# ./if6.sh 
please input a filename:if5.sh    
if5.sh is a regulare file
[root@catyuan ~]# ./if6.sh 
please input a filename:
error,please input a filename
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值