shell计算工具源码

#!/bin/bash

#定义最大公约数和最小公约数
GCD_RESULT=""
LCM_RESULT=""

#定义一个相加的函数
function sum() {
 result=$(( num1+num2 )) 
 echo -e "\033[31m 两个数之和为$result \033[0m"
}

#定义一个求最大公约数函数
function divisor() {
 if [ "$num1" -eq "$num2" ];   
 then  
      s_great=$num1
      s_small=$num2
      #export s_great
      #export s_small
 fi  
 if [ "$num1" -gt "$num2" ];   
 then   
     s_great=$num1  
     s_small=$num2  
 else  
     s_great=$num2  
     s_small=$num1  
 fi 
 i=1  
 GCD_RESULT=1  
 greattmp=1  
 smalltmp=1  
 LCM_RESULT=1  
 export GCD_RESULT
 while [ $i -le "$s_small" ]  
 do  
    greattmp=`expr $s_great % $i`  
    smalltmp=`expr $s_small % $i`  
    if [ ${greattmp} -eq 0 ]; then   
        if [ ${smalltmp} -eq 0 ]; then  
            GCD_RESULT=${i}  
        fi  
    fi  
    i=`expr ${i} + 1`  
 done  
 LCM_RESULT=`expr $s_small / $GCD_RESULT`
 LCM_RESULT=`expr $LCM_RESULT \* $s_great`  
 #echo -e "\033[31m 两个数最大公约数为$s_great \033[0m"
} 

function say() {
   divisor
   echo -e "\033[31m 两个数最大公约数为$GCD_RESULT \033[0m"
}

#定义一个求最小公倍数函数
function multiple() {
   divisor
   
   echo -e "\033[31m 两个数最小公倍数为$LCM_RESULT \033[0m"
}

function main() {
  echo "---------------------------"
  echo "请输入你要执行的方法"
  echo "输入1:执行相加函数,返回两数之和"
  echo "输入2:执行最大公约数函数,返回两数最大公约数"
  echo "输入3:执行最小公倍数函数,返回两数最小公倍数"
  echo "输入4:退出"
  read input
  case $input in
  1)
  sum;;
  2)
  say;;
  3)
  multiple;;
  4)
  exit;;
  esac 

}

if [ $# != 2 ];then
   echo "命令格式不对, 命令格式:  sh d.sh num1 num2"
   exit
fi

#根据返回的状态判断输入是否为数字
num=`expr $1 + 0 &>/dev/null`

if [ $? -ne 0 ];then
   echo "num1 必须是数字格式"
   exit
fi

num=`expr $2 + 0 &>/dev/null`

if [ $? -ne 0 ];then
   echo "num2 必须是数字格式"
fi

#显示选择菜单

while true
do
  num1=$1
  num2=$2
  main
done
时间: 2024-11-08 23:39:54

shell计算工具源码的相关文章

Shell主要逻辑源码级分析(1)——SHELL运行流程

版权声明:本文由李航原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/109 来源:腾云阁 https://www.qcloud.com/community 本文的目的:分享一下在学校的时候分析shell源码的一些收获,帮助大家了解shell的一个工作流程,从软件设计的角度,看看shell这样一个历史悠久的软件的一些设计优点和缺陷.本文重点不是讲SHELL语法,相信很多同事玩shell都很熟了. 本文的局限:限于本人技术水

CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)

前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上网的机子(两台笔记本+一台台式机),下载资料还得用公司的U盘再转到自己电脑,这种半封闭的环境,相当的让人不适应,有种欲仰天吐血的感觉. 这一周我都向三个带总的领导反映了上网问题,不过没啥响应,估计是没戏. 于是我只有把其中一台能上网的笔记本拿到自己桌子上去独自占用了,勉强也能上下网了,不过基于安全问

【python】13位随机序列号生成工具 源码分析

By Dolphin,BeiJing,20150712 0X00  背景 最近在学习python 这门语言,刚学完for循环,对于很多语句语法都不太熟悉.就在今天,看到有某个网站的活动,需要输入一个13位的序列号来判断你是否中奖,但是这个13位序列号是需要购买他们家的产品才能获得,得耗费一定的金钱,于是我就在想,是不是能自己写一个序列号生成器来碰碰运气,所以决定运用刚学的python的初级知识进行编写. 0X01  知识点准备 这个工具主要的功能是生成随机字母做序列号,python中的rando

基于Java NIO的多人在线聊天工具源码实现(登录,单聊,群聊)

近来在学习Java NIO网络开发知识,写了一个基于Java NIO的多人在线聊天工具练练手.源码公开在Coding上: https://coding.net/u/hust_wsh/p/MyChat/git ,开发环境是Ubuntu14.04+Eclipse Mars+JDK1.8. 要想编写一个基于Java NIO的多人在线聊天工具,我总结需要以下几方面的地址:客户端服务器模型,Java NIO中的Selector,SocketChannel,ByteBuffer,Collections以及序

shell脚本   http源码启动脚本

源码包http启动脚本,仅供参考......下面有文本的. #!/bin/bash #Author: wangergui              Email:[email protected]         Date:2016-06-01 #Function: source apache start script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root:/bin export PATH [

shell脚本实现源码lamp自动化安装

代码如下,写了好久,在centos6.3实践中用过,分享给大家@.·[email protected] 运行此脚本的前提有gcc/gcc-c++的编译环境,此脚本用到一些源码包(apr-1.2.7,apr-util-1.2.7,autoconf-2.59,cmake-2.6.4,curl-7.15.1,freetds-2.2.2,gd-2.0.33,httpd-2.2.31,jpegsrc-v7,libmcrypt-2.5.7,libpng-1.2.10,libxml2-2.6.26,mysql

java计算总奖金用Swing工具-源码(可扩展功能的)

题目:企业发放的奖金根据利润提成. * 利润(I)低于或等于10万元时,奖金可提10%: * 10万到20万之间时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: * 20万到40万之间时,高于20万元的部分,可提成5%: * 40万到60万之间时,高于40万元的部分,可提成3%: * 60万到100万之间时,高于60万元的部分,可提成1.5%: * 高于100万元时,超过100万元的部分按1%提成. * 从键盘输入当月利润,求应发放奖金总数? package com.bj

C++用来检测数据类型的声明工具源码

代码期间,把代码过程中较好的代码片段做个珍藏,如下的代码内容是关于C++用来检测数据类型的声明工具的代码,应该是对码农有较大用. #include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>#define MAXTOKENS 100#define MAXTOKENLEN 64 struct token{char type;char string[MAXTOKENLEN];

webbench网站测压工具源码分析

1 /* 2 * (C) Radim Kolar 1997-2004 3 * This is free software, see GNU Public License version 2 for 4 * details. 5 * 6 * Simple forking WWW Server benchmark: 7 * 8 * Usage: 9 * webbench --help 10 * 11 * Return codes: 12 * 0 - sucess 13 * 1 - benchmark