多分支if条件语句

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

exit 自定义错误码:返回错误码,程序退出不再运行,后面的脚本程序不再执行

计算器

需求分析

  • 有没有输入内容
  • 判断输入的内容是不是数值
  • 判断输入的运算符
  • 执行运算符操作

脚本

  • #!/bin/bash
  • #声明result整型变量
  • declare -i result
  • #接收用户输入参数
  • read -p "请输入第一个数字:" -t 30 num1
  • read -p "请输入运算符:" -t 30 ope
  • read -p "请输入第二个数字:" -t 30 num2
  • #-n 判断用户输入是否非空,非空为真-a 多个判断同时为真,返回为真
  • if [ -n "$num1" -a -n "$ope" -a -n "$num2" ]
  •   then
  •   #使用sed替换,查找用户输入内容有数字的替换为空值
  •   test1=$(echo "$num1" | sed 's/[0-9]//g')
  •   test2=$(echo "$num2" | sed 's/[0-9]//g')
  •   #-z 判断字符是否为空,为空返回真
  •   if [ -z "$test1" -a -z "$test2" ]
  •     then
  •     if [ "$ope" == '*' ]
  •       then
  •       result=$(($num1*$num2))
  •     elif [ "$ope" == '+' ]
  •       then
  •       result=$(($num1+$num2))
  •     elif [ "$ope" == '-' ]
  •       then
  •       result=$(($num1-$num2))
  •     elif [ "$ope" == '/' ]
  •       then
  •       result=$(($num1/$num2))
  •     else
  •       echo "运算符格式输入错误"
  •       #返回错误码10
  •       exit 10
  •     fi
  •   else
  •     echo "数字输入错误"
  •     exit 11
  •   fi
  • else
  •   echo "请输入数字"
  • fi
  • echo "$num1 $ope $num2 = $result"

Shell系列(33) - 多分支if语句简介及计算器例子的更多相关文章

  1. Shell系列(34) - 多分支case语句简介及实例

    多分支case条件语句 概念 case语句和if...elif...else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关 ...

  2. Linux Shell系列教程之(十三)Shell分支语句case … esac教程

    本文是Linux Shell系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell系列教程 分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使 ...

  3. Linux Shell系列教程之(一)Shell简介

    本文是Linux Shell系列教程的第(一)篇,更多shell教程请看:Linux Shell系列教程 想要学习linux,shell知识必不可少,今天就给大家来简单介绍下shell的基本知识. S ...

  4. Linux Shell系列教程之(十五) Shell函数简介

    本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...

  5. shell编程之case分支语句

    shell编程之case分支语句 case分支语句和if的多分支语句很相似. if多分支语句一般用在有(区间范围)的地方 :例如:0-100之间. if需要判断多个不同的条件. case的分支语句用在 ...

  6. (转)Linux Shell系列教程之(十四) Shell Select教程

    本文属于<Linux Shell 系列教程>文章系列,该系列共包括以下 18 部分: Linux Shell系列教程之(一)Shell简介 Linux Shell系列教程之(二)第一个Sh ...

  7. Linux Shell系列教程

    学习Linux Shell知识,就来Linux大学网(Linuxdaxue.com)! 本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格 ...

  8. Linux Shell系列教程之(十四) Shell Select教程

    本文是Linux Shell系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句case ...

  9. Linux Shell系列教程之(九)Shell判断 if else 用法

    本文是Linux Shell系列教程的第(九)篇,更多shell教程请看:Linux Shell系列教程 判断语句是每个语言都必不可少的关键语法,Shell命令当然也不例外.今天就给大家介绍下Shel ...

随机推荐

  1. Block循环引用详解

    前言 在项目中经常用到block,使用不当就很容易因为循环引用而造成内存泄漏.本文分析了block循环引用形成原因以及处理办法,如果有什么不对或者疑问请留言. 什么情况下block会造成循环引用 bl ...

  2. linux /etc/passwd详解

    文件概述 Linux 系统中的 /etc/passwd 文件,是系统用户配置文件,存储了系统中绝大部分的用户基本信息,并不是所有,所有用户都可以对此文件执行读操作.(如果通过其他方式创建管理的用户名. ...

  3. KVM常用命令

    查看所有虚拟机状态:执行virsh list –all 启动该虚拟机:执行virsh start test 关机虚拟机:virsh shutdown     此方法为正常关机方法,需要一段才能关机关闭 ...

  4. TP6 服务器响应500时没有错误信息的解决方案

    重点!!!! 首先,确认你的电脑管理员账户是否含有中文!!!!!!就像下面这种:所以出现了没有错误提示    查看nginx日志显示\vendor\topthink\framework\src\thi ...

  5. flutter 常用视图组件

    1.custom class widget main.dart 1 import 'package:flutter/material.dart'; 2 import './pages/custom.d ...

  6. springboot中添加事务注解

    1.首先在service层中的方法前添加@Transactional @Service public class UserService { @Autowired private UserMapper ...

  7. 对集合使用Comparator

    1 import java.util.Comparator; 2 import java.util.PriorityQueue; 3 4 /** 5 * 对集合使用Comparator,不改变对象的自 ...

  8. HCNP Routing&Switching之OSPF LSA类型

    前文我们了解了OSPF中的虚连接相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15202348.html:今天我们来聊一聊OSPF数据包中LSA类型相 ...

  9. mybatis相关函数

    MyBatis中的if....else...表示方法 <choose> <when test=""> //... </when> <oth ...

  10. 测试Kaggle kernel commit 是否会删除以前的output

    在kaggle上创建kernel,加入如下代码. 连续运行两次,可以看到保存的文件名字不一样,且无论运行错少次,都只有一个输出文件. 这说明,kaggle上的kernel每次commit运行,都会清空 ...