📜  用于检查有效浮点值的 Shell 脚本

📅  最后修改于: 2022-05-13 01:57:32.772000             🧑  作者: Mango

用于检查有效浮点值的 Shell 脚本

管理用户输入可能会很忙,特别是如果它是关于数字的。假设您想在您的应用程序或脚本中执行数学计算。不难说它将不得不处理浮点数。在许多静态类型的编程语言中这很容易,但是如果必须在终端中进行,那么这会变得非常烦人,因为 shell 脚本或 bash 没有任何数据类型。

我们必须在没有数据类型的情况下处理,并利用编程技能来实际使其工作。希望我们在 Bash 中有正则表达式来处理这些问题。正则表达式或正则表达式,简而言之,顾名思义是一种可以在文本字段中找到某些模式的表达式。它是程序员工具包中非常强大的工具。那么,让我们看看如何解决这个问题。

方法

因此,让我们找到问题陈述的模块化方法。我们需要检查输入变量是否是十进制(浮点)数。为此,我们必须在变量中只有数字和一个小数点。小数点可以在任何地方,但必须只有一个。要检查是否只存在数字,我们可以使用正则表达式,此外我们还可以检查从第二个字符到倒数第二个字符的小数点,因为小数点不能位于开头和结尾。我们可以简单地使用条件语句来验证这些必要条件。

解释

首先,我们将获取用户输入并将其存储在任何优选的命名变量中。

我们使用 read 来提示用户输入。与“读取”命令一起,我们将使用 -p 作为基本“读取”命令的参数,用于显示文本的提示,例如输入数字或任何更可取的相关信息。



现在我们需要检查输入是否为数字。这使我们可以确保下一个条件是浮点值,否则它将与数字和浮点数发生冲突。

正则表达式:

正则表达式允许我们在文本或变量中查找模式。这里我们使用 n 作为输入变量。我们使用 =~ 让 bash 知道即将到来的表达式是一个 RegEx。之后,我们使用 ^ 和 $ 从头到尾检查模式。

一个数字可以有正号或负号,浮点值也是如此,因此它适用于这两种情况。 [ ] 之间的任何内容都必须与输入匹配,在这种情况下,我们包含 0-9,因为输入中可以包含任何数字。我们添加了一个“?”在 +- 符号之后使那些可选,即不强制包含 + 来表示数字为正数。 * 符号重复前面的表达式零次或多次,以进一步包含更多数字。在确定一个数字后,我们使用“+”将以下条件包含到前面一次或多次。浮点条件中的“\”只是表现得像普通字符。我们最后添加“.”之间 ”?”合并表达式并使十进制可选,但它不会调用数字,因为条件已经被前一个 if 条件满足。因此,我们用“$”符号结束表达式并打印输入是整数、浮点值或任何表达式的满足条件。

Shell 脚本代码片段

#!/bin/bash

# User Input
read -p "Enter the number : " n


# Check for a number
if [[ $n =~ ^[+-]?[0-9]+$ ]];then
echo "The Input is an integer."


# Check for a floating number
elif [[ $n =~ ^[+-]?[0-9]*\.?[0-9]+$ ]];then
echo "Input is a float "
else
echo "The input is not a number."
fi

输出:

用于测试数字是否为有效浮点值的 Shell 脚本

带有许多测试用例的 ShellScript 输出

通过使用正则表达式制作 Shell 脚本,我们验证了用户输入是否为浮点数。该脚本不会将科学记数法视为也可以实现的浮点值,但为了简单使用而保持简单,这可以准确地工作。