多分支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. clickhouse的windowFunnel(漏斗)

    1.WindowFunnel 关于官网的解释: Returned value:Integer. The maximum number of consecutive triggered conditio ...

  2. 012 基于FPGA的网口通信实例设计【转载】

    一.网口通信设计分类 通过上面其他章节的介绍,网口千兆通信,可以使用TCP或者UDP协议,可以外挂PHY片或者不挂PHY片,总结下来就有下面几种方式完成通信: 图8‑17基于FPGA的网口通信实例设计 ...

  3. Java角度制向弧度制转化

    1.第一次写博客啊写博客啊写啊写0.0..0. 2.输入正多边形的边长·边数·求正多边形的面积 3.超级简单,可是在转弧度制那里有点懵,刚开始学Java,所以难免走弯路 4.代码如下: 1 publi ...

  4. NOIP 模拟 6 模板

    题目 题解 这道题是一道启发式合并的题目,每次合并完重构一下线段树就可以,不用线段树合并. 以操作时间为下标,建立一颗线段树,维护小球的个数与小球的颜色数,最后线段树上二分查找. 我们先不用考虑每个节 ...

  5. FTP 大文件传输问题 解决

    问题描述 将附件上传至FTP服务器,但是当附件过大,其大小为几百兆或1-2G时,会出现上传失败的现象 FTP上传原理解析 这里我们使用的是.Net的FtpWebRequest 创建FtpClient ...

  6. .Net Core NPOI读取Excel 并转为数据实体类

    创建应用程序 这里直接创建Console程序 引用NPOI的NuGet包 PM> Install-Package NPOI -Version 2.5.1 直接Nuget包管理器添加 导入Exce ...

  7. .Net Core 集成 Redis

    首先安装RedisServer 安装教程可参照 http://www.redis.cn/download.html 或者 https://www.runoob.com/redis/redis-inst ...

  8. 寻找最短路径Dijkstra算法

    1 /** 2 * 1.对于T中的每个顶点u,找到u的具有最小权重的连接边.所有到u的连接边都存储在queues.get(u)中.queues.get(u).peek()返回拥有最小权值 3 * 的连 ...

  9. 网络流量预测入门(三)之LSTM预测网络流量

    目录 网络流量预测入门(三)之LSTM预测网络流量 数据集介绍 预测流程 数据集准备 SVR预测 LSTM 预测 优化点 网络流量预测入门(三)之LSTM预测网络流量 在上篇博客LSTM机器学习生成音 ...

  10. promise的信任问题&控制反转

    //信任问题 //第三方的某个库 function method(cb){ setTimeout(function(){ cb && cb(); //这个库的bug:函数被多调用了一次 ...