bash+如何验证数字(浮点或整数)是否小于整数1

2024-10-03 23:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我的任务是验证$VALNUMBERcould be float or integer是否小于NUMBER 1

是的

val=0.999
[[ $val -lt 1 ]] && echo less then 1
-bash: [[: 0.999: syntax error: invalid arithmetic operator (error token is ".999")

比较任何$val数字(浮点或整数)并测试其值是否小于1的正确方法是什么

解决方案还可以使用Perl/Python line linear,这将是我的bash脚本的一部分


Tags: orltechobashnumbererrorvalinteger
3条回答

使用awk:

awk -v val=$val 'val < 1 { print "less that 1" }' <<< /dev/null

用-v将变量$val传递给awk,当它小于1时,打印“小于1”

因为shell本身不能对浮点数执行操作 bc通常用于此目的 意图在您的情况下,它将是:

#!/usr/bin/env bash

val=0.999
if [ "$(bc <<< "$val < 1")" -eq 1 ]
then
    echo less than 1
fi

由于您特别询问了Perl/Python,因此 在Python中可以做到这一点:

#!/usr/bin/env bash

val=0.999
if [ "$(python3 -c "print(1) if $val < 1 else print(0)")" -eq 1 ]
then
    echo less than 1
fi

最后,Perl:

#!/usr/bin/env bash

val=0.999
if perl -e'exit $ARGV[0] < 1' "$val"
then
    echo less than 1
fi

使用bc。将要计算的表达式写入bc的标准输入,它将输出结果。在这种情况下,布尔表达式将生成0(如果为false),1(如果为true)

if [[ $(echo "$val < 1" | bc) == 1 ]]; then
    echo less than 1
fi

相关问题 更多 >