热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shellif非_Shell编程:编写sum函数,计算所有参数之和

Shell编程:编写sum函数,计算所有参数之和今天有网友求助,说是正在考试,有一道题不会做。题目不是很难:编

Shell编程:编写sum函数,计算所有参数之和
7ae4d92b43459f8f9a79e8e9a08b9f84.png

今天有网友求助,说是正在考试,有一道题不会做。题目不是很难:编写sum函数,计算所有参数之和。这道题的编码思路很简单,只涉及数学运算和shell参数。

花了几分钟,初步的测试代码如下:

219e3a3d0e608674dde24a05ee293c35.png

sum=0for i in $@ do    sum=`expr $sum + $i`doneecho $sum

$@ 是取shell脚本接收到的所有参数,使用for in 来迭代取出每个参数

expr 就是计算表达式,比如expr foo=1 + 1 ,结果为2

试运行:

7a5cf2aa8c237aae2bc4a1e57ab9b257.png

可以看到,运算结果是正确的,稍加修改这道题就可以交卷了

最终代码:

#!/bin/bash# filename: getsum.shfunction params_sum(){ sum=0 for i in $@ do sum=`expr $sum + $i` 2>/dev/null # 如果expr 的退出码不为0,则参数中包含字符或者其它非整数,提示用户重新输入 if [[ $? -ne 0 ]];then echo "$i is not a Integer number ,please reenter!" fi done echo $sum}params_sum $@

解释:

利用 expr 的报错来判断所输入的参数是否是整数,如果有字符或者浮点数则报错,提示重新输入

2>/dev/null 将expr 报错指向null

13e022c7cfff33a1be229246d9f8dedd.png

运行结果:

e06916625830ccf0ea0c0b1b8e1c7016.png
dff3bf48f855b05f19745432b40b9c43.png

这段代码仍不完美,下一篇文章详细介绍 Shell运算 和shell参数处理之后再修改它,相信聪明的读者已经看出问题所在了吧。



推荐阅读
author-avatar
又未命名
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有