本文共 1673 字,大约阅读时间需要 5 分钟。
#!/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" exitfi#根据返回的状态判断输入是否为数字num=`expr $1 + 0 &>/dev/null`if [ $? -ne 0 ];then echo "num1 必须是数字格式" exitfinum=`expr $2 + 0 &>/dev/null`if [ $? -ne 0 ];then echo "num2 必须是数字格式"fi#显示选择菜单while truedo num1=$1 num2=$2 maindone
转载于:https://blog.51cto.com/20150721/1695664