Shell系列(33) - 多分支if语句简介及计算器例子
多分支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语句简介及计算器例子的更多相关文章
- Shell系列(34) - 多分支case语句简介及实例
多分支case条件语句 概念 case语句和if...elif...else语句一样都是多分支条件语句,不过和if多分支条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关 ...
- Linux Shell系列教程之(十三)Shell分支语句case … esac教程
本文是Linux Shell系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell系列教程 分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使 ...
- Linux Shell系列教程之(一)Shell简介
本文是Linux Shell系列教程的第(一)篇,更多shell教程请看:Linux Shell系列教程 想要学习linux,shell知识必不可少,今天就给大家来简单介绍下shell的基本知识. S ...
- Linux Shell系列教程之(十五) Shell函数简介
本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...
- shell编程之case分支语句
shell编程之case分支语句 case分支语句和if的多分支语句很相似. if多分支语句一般用在有(区间范围)的地方 :例如:0-100之间. if需要判断多个不同的条件. case的分支语句用在 ...
- (转)Linux Shell系列教程之(十四) Shell Select教程
本文属于<Linux Shell 系列教程>文章系列,该系列共包括以下 18 部分: Linux Shell系列教程之(一)Shell简介 Linux Shell系列教程之(二)第一个Sh ...
- Linux Shell系列教程
学习Linux Shell知识,就来Linux大学网(Linuxdaxue.com)! 本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格 ...
- Linux Shell系列教程之(十四) Shell Select教程
本文是Linux Shell系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句case ...
- Linux Shell系列教程之(九)Shell判断 if else 用法
本文是Linux Shell系列教程的第(九)篇,更多shell教程请看:Linux Shell系列教程 判断语句是每个语言都必不可少的关键语法,Shell命令当然也不例外.今天就给大家介绍下Shel ...
随机推荐
- nohup 启动命令
start.sh #!/bin/bash nohup $PWD/node_exporter > /dev/null 2>&1 &
- windows中抓取hash小结(上)
我上篇随笔说到了内网中横向移动的几种姿势,横向移动的前提是获取了具有某些权限的用户的明文密码或hash,正愁不知道写点啥,那就来整理一下这个"前提"-----如何在windows系 ...
- linux ftp ubuntu18.04 实测有效 完整方法 vsftpd
https://linuxize.com/post/how-to-setup-ftp-server-with-vsftpd-on-ubuntu-18-04/ 除了此链接完整有效,其他网友 大都残缺不全 ...
- 数据结构与算法-排序(八)计数排序(Counting Sort)
摘要 计数排序本质就是统计不同元素出现的次数,然后将元素依次从小到大放置,每个元素看统计的次数,就紧挨着放置几个同样的元素. 看似简单的处理,在算法中,会依据统计的元素次数推算出每个元素的索引位置,这 ...
- jdbc获取PreparedStatement最终执行的sql语句
//直接打印PreparedStatement对象 System.out.println(ps); 输出结果: com.mysql.jdbc.JDBC42PreparedStatement@5f205 ...
- kafka零数据丢失的配置方案
讨论一下kafka参数的配置 1.acks 参数配置 acks这个参数有三个值:0,1,-1,但是不用的参数对应的含义不同,那如果我们想要保证数据不丢失,acks 值应该设置为哪个参数呢? 0:代表生 ...
- ES6 promise的应用
html部分 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <me ...
- T-SQL - query03_去重查询|模糊查询|排序|分组|使用函数
时间:2017-09-29 整理:byzqy 本篇仍以"梁山好汉"数据表为例,介绍几个常用的 T-SQL 查询语句: 去重查询,关键字:distinct 使用通配符模糊查询,关键字 ...
- Spring Boot 入门系列(二十三)整合Mybatis,实现多数据源配置!
d之前介绍了Spring Boot 整合mybatis 使用注解方式配置的方式实现增删改查以及一些复杂自定义的sql 语句 .想必大家对spring boot 项目中,如何使用mybatis 有了一定 ...
- uniapp H5 打包并部署到 nginx
个人也是了百度了挺久的了,花费的时间( 俩个半小时 ) uniapp 的打包首先要先配置,配置好了才能去进行打包,如图所示. 这只是第一步. 注意: 1.运行基础路径最好用 ./ ,如果配置了其他请自 ...