文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何用Shell实现数学运算自定义函数

2023-06-09 18:30

关注

本篇内容介绍了“如何用Shell实现数学运算自定义函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

最近脚本中总是需要计算,每次都用awk会比较麻烦,就把awk的加减乘除封装了下,每次调用直接source math.sh就可以了。
有些要点要指出,以免以后修改的时候忘记:   
1、对两个数字进行判断是否为数字,使用awk进行匹配
2、对两个参数进行循环校验(写两次校验显得笨拙),需要使用变量的引用${!para}。

代码如下:

#!/bin/bash
############################
#重写shell中基本数学运算+ - × /
#时间:2014-01-18
#邮箱:jianye_jia@163.com
#版本: version 1.0
#备注:目前只支持2位整数运算
############################
#####################
#function is_Digit()
#判断参数是否为数字
#支持浮点数
#只能传入一个参数
#是,返回1,否则返回0
######################
functionis_Digit()
{
ref=`echo$1 |  awk'{print($0~/^[+-]?[0-9]?*(\.[0-9]*)?$/)?"digit":"string"}'`
if[ "$ref"== "digit"];then
return0;
else
return1;
fi
}
###################
#function multiply()
#判断参数是否为数字
#并将两个参数相乘
#函数直接传入引用
#变量的变量的实现${!para}
#函数的返回值,不能像C一样return,
#需要打印输出,echo
###################
functionmul()
{
for(( i=1;i<3;i++ ))
do
pa="$i"
ifis_Digit ${!pa}
then
continue;
else
echo"$pa isn't a number";
return0;
fi
done
ref=`awk-vnum_a=$1 -vnum_b=$2 'BEGIN{printf "%d \n",num_a*num_b}'`;
echo$ref;
}
########################
#function div()
#检查参数,返回两个数字差
########################
functiondiv()
{
for(( i=1;i<3;i++ ))
do
pa="$i"
ifis_Digit ${!pa}
then
continue;
else
echo"$pa isn't a number";
return0;
fi
done
ref=`awk-vnum_a=$1 -vnum_b=$2 'BEGIN{printf "%d \n",num_a/num_b}'`;
echo$ref;
}
########################
#function add()
#检查参数,返回两个数字和
########################
functionadd()
{
for(( i=1;i<3;i++ ))
do
pa="$i"
ifis_Digit ${!pa}
then
continue;
else
echo"$pa isn't a number";
return0;
fi
done
ref=`awk-vnum_a=$1 -vnum_b=$2 'BEGIN{printf "%d \n",num_a+num_b}'`;
echo$ref;
}
########################
#function sub()
#检查参数,返回两个数字差
########################
functionsub()
{
for(( i=1;i<3;i++ ))
do
pa="$i"
ifis_Digit ${!pa}
then
continue;
else
echo"$pa isn't a number";
return0;
fi
done
ref=`awk-vnum_a=$1 -vnum_b=$2 'BEGIN{printf "%d \n",num_a-num_b}'`;
echo$ref;
}
###################
#function mul_f()
#判断参数是否为数字
#并将两个参数相乘
#函数直接传入引用
#变量的变量的实现${!para}
#函数的返回值,不能像C一样return,
#需要打印输出,echo
###################
functionmul_f()
{
for(( i=1;i<3;i++ ))
do
pa="$i"
ifis_Digit ${!pa}
then
continue;
else
echo"$pa isn't a number";
return0;
fi
done
ref=`awk-vnum_a=$1 -vnum_b=$2 'BEGIN{printf "%0.2f \n",num_a*num_b}'`;
echo$ref;
}
########################
#function div_f()
#检查参数,返回两个数字差
########################
functiondiv_f()
{
for(( i=1;i<3;i++ ))
do
pa="$i"
ifis_Digit ${!pa}
then
continue;
else
echo"$pa isn't a number";
return0;
fi
done
ref=`awk-vnum_a=$1 -vnum_b=$2 'BEGIN{printf "%0.2f \n",num_a/num_b}'`;
echo$ref;
}
########################
#function add_f()
#检查参数,返回两个数字和
########################
functionadd_f()
{
for(( i=1;i<3;i++ ))
do
pa="$i"
ifis_Digit ${!pa}
then
continue;
else
echo"$pa isn't a number";
return0;
fi
done
ref=`awk-vnum_a=$1 -vnum_b=$2 'BEGIN{printf "%0.2f \n",num_a+num_b}'`;
echo$ref;
}
########################
#function sub_f()
#检查参数,返回两个数字差
########################
functionsub_f()
{
for(( i=1;i<3;i++ ))
do
pa="$i"
ifis_Digit ${!pa}
then
continue;
else
echo"$pa isn't a number";
return0;
fi
done
ref=`awk-vnum_a=$1 -vnum_b=$2 'BEGIN{printf "%0.2f \n",num_a-num_b}'`;
echo$ref;
}

“如何用Shell实现数学运算自定义函数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯