5

我有一个基本上评估 2 个十进制数字的脚本。

if (( $(echo "$p $q" | awk '{ print ($1 < $2)}') )); then
   echo "Evaluation: Acceptable!"

q 是来自用户输入的小数或数字。
p 是一个计算出来的数字。

因此,如果 p=1 且 q=2,则结果是可接受的。

问题#1
如果计算的 p 为 -150,而 q=2,我们如何评估它是不可接受的。基本上,如果 p 小于 0 或负值,则结果应该是不可接受的。

问题#2
q 是一个范围:-q < 0 < q
示例:用户输入 q=0.01
可接受的范围:-0.01 到 0.01
如果 p 在这个范围内,那么它是可以接受的,否则是不可接受的。

有任何想法吗?

4

2 回答 2

3

我认为这个 awk 对你来说应该足够了:

awk '{print ($1 > 0 && $1 < $2)}'

关于您的要求#2:

由于根据要求 #1,任何 p 都不能为负数,因此只需检查$1 < $2就足够了。

于 2013-10-22T11:10:09.250 回答
3

目前尚不清楚您的 2 个问题是否是附加限制,要添加到您的“if (p < q)”条件中,或者它们是否是分开的。我将向您展示三个单独的 awk 调用;让我们知道您是否需要合并。在大多数情况下,您只需&&在 if 条件中添加由分隔的条件。设置变量 p 和 q 而不是使用 $1 和 $2 对我来说似乎更清楚,但是如果您只是编写单行代码,那并不重要。

echo $p $q | awk '{ p=$1; q=$2; if (p < q) print "acceptable"; }'
echo $p $q | awk '{ p=$1; q=$2; if (p < 150) print "UNacceptable"; }'
echo $p $q | awk '{ p=$1; q=$2; if (p >= -q && p <= q) print "acceptable"; else print "UNacceptable"; }'
于 2013-10-22T18:08:07.667 回答