本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅
1 #!/bin/bash 2 #求两个整数的最大公约数 3 4 E_BADARGS=65 5 6 #如果参数个数不为2,以参数错误退出 7 if [ $# -ne 2 ] 8 then 9 echo "Usage: `basename $0` first-number second-number"10 exit $E_BADARGS11 fi12 13 #如果参数非整数或参数值为0,以参数错误退出14 for i in $@15 do16 if [ $i=~[0-9]+ ] #"=~"后面表示要跟正则表达式,+在正则表达式中表示前面的内容至少匹配一次17 then18 if [ $i -eq 0 ]19 then20 echo "Usage: `basename $0` parameter can't be zero"21 exit $E_BADARGS22 fi23 else24 echo "Usage: `basename $0` parameter must be integer"25 exit $E_BADARGS26 fi27 done28 29 #设计一个gcd()函数,利用辗转相除法(欧几里德算法)求最大公约数30 gcd()31 {32 remainder=133 dividend=$134 divisor=$235 36 until [ $remainder -eq 0 ]37 do38 let "remainder=$dividend % $divisor"39 dividend=$divisor40 divisor=$remainder41 done42 }43 44 gcd $1 $245 46 echo "gcd of $1 and $2 is: $devidend"47 48 exit 0
在改编这个脚本的时候,我的考虑点主要有以下:
1. 所传的参数是不是要排除非整数的情况?
非整数的情况第一次我用echo $i | sed '/s/^[0-9]*$/''/g' && echo $?来排除,如果第一条命令正确执行,$?应该返回0,但是我们有更好的方法,即“=~"后面跟正则的方式
2. 参数值为0的情况是不是要排除在外?
在判断$i为整数的判断下再嵌套一个判断[ $i -eq 0 ]
3. 参数个数怎么控制?
[ $# -eq 2 ]或[ $# -ne 2 ]就可以排除空参数或参数个数不为2
4. 欧几里德算法中对于$1<$2的情况的处理?
先看$1>$2的情况
$1=65 $2=15
第一个循环:5=65 % 15
dividend=15
divisor=5
第二次循环 0=15%5
dividend=5
divisor=0
退出循环,gcd=$dividend=5
再看$1<$2的情况
$1=15 $2=65
第一次循环:15=15 % 65
dividend=65
divisor=15
第二次循环:5=65 % 15
dividend=15
divisor=5
第三次循环:0=15 % 5
dividend=5
divisor=0
退出循环,gcd=$dividend=5
可知$1<$2的情况比$1>$2的情况多了一个循环,结果是一样的
以上是两个整数的最大公约数怎么实现的?的详细内容。更多信息请关注PHP中文网其他相关文章!

日期和时间值的操作是编程的一个重要方面,Python语言为此提供了一个有用的内置模块,称为datetime。但是,在某些情况下,可能需要将DateTime对象转换为整数值,以便执行特定的操作或计算。在Python中将DateTime转换为整数有多种方法,每种方法都有自己的优点和缺点。在本文中,我们将深入研究这些方法并检查每种方法何时适合使用。读完本文后,您将全面了解如何在Python中有效地将DateTime对象转换为整数,并能够为您的特定编程任务选择最合适的方法。方法一:使用timestamp

在javascript中,可以利用toFixed()函数来将整数转为小数,该函数能够把整数转换为指定小数位数的数字;语法“number.toFixed(x)”,参数“x”规定小数的位数。

整数的正则表达式有:1、匹配正整数:^[1-9]\d*$;2、匹配负整数:^-[1-9]\d*$;3、匹配正整数和负整数:^-?\d+$;4、匹配非零整数:^(0|[1-9]\d*)$;5、匹配整数(包括零):^-?\d+$。

在SharePoint上安装SSL证书是保护网站安全性和提供加密连接的关键步骤。通过遵循正确的安装步骤,您可以确保网站数据的安全性,并提升在搜索引擎中的排名,为访问者提供更好的用户体验。获取SSL证书联系可信任的证书颁发机构(CA)购买SSL证书。提供所需的身份验证和域名所有权验证信息。完成验证流程后,您将收到SSL证书文件。准备证书文件使用文本编辑器打开您的SSL证书文件。将证书内容复制到一个新的文本文件中。将该文件保存为yourdomain.cer,确保将”yourdomain”

PHP中时间戳是一种表示时间的整数形式,通常是自Unix元年(1970年1月1日00:00:00GMT)起经过的秒数。在编程中,我们经常需要将时间戳转换为其他形式的整数,下面就为大家介绍如何将PHP时间戳转换为整数的方法,以及具体的代码示例。在PHP中,我们可以使用strtotime()函数将时间字符串转换为时间戳,然后再使用date

MySQL中如何使用INET_ATON函数将IP地址转换为整数?在网络编程中,经常会涉及到IP地址的处理和存储。IP地址通常采用点分十进制(dotted-decimal)形式表示,例如192.168.1.1。然而,对于一些需要高效存储和处理IP地址的情景,将IP地址转换为整数形式可能更加方便和有效。在MySQL数据库中,有一个内置函数叫做INET_ATON

如何使用Integer类的parseInt()方法将字符串转换为整数在编程中,我们经常需要将一个字符串转换为整数。Java提供了一个非常方便的方法,即使用Integer类的parseInt()方法来实现这个功能。本文将详细介绍Integer类的parseInt()方法的使用,以及提供一些使用该方法的示例代码。Integer类是Java中表示整数的包装类之一,

Python是一种流行的编程语言,广泛应用于数据分析、机器学习、网页开发等领域。在Python中,random模块提供了一个random.randint()函数,用于生成随机整数。本文将介绍如何使用random.randint()函数来生成随机整数,并提供一些代码示例。首先,我们需要导入random模块:importrandom接下来,就可以调用rando


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载
最流行的的开源编辑器

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)