bash + 如何验证数字(浮点数或整数)是否小于整数 1
bash + how to verify if number ( float or integer ) is less then integer number 1
我的任务是验证 $VAL
NUMBER could be float or integer
是否小于数字 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 脚本的一部分
使用 awk:
awk -v val=$val 'val < 1 { print "less that 1" }' <<< /dev/null
通过-v 将变量 $val 传递给 awk,然后当它小于 1 时,打印“小于 1”
使用bc
。将你要求值的表达式写入bc
的标准输入,它会输出结果。在这种情况下,如果为假,布尔表达式将产生 0,如果为真,则产生 1。
if [[ $(echo "$val < 1" | bc) == 1 ]]; then
echo less than 1
fi
由于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
我的任务是验证 $VAL
NUMBER could be float or integer
是否小于数字 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 脚本的一部分
使用 awk:
awk -v val=$val 'val < 1 { print "less that 1" }' <<< /dev/null
通过-v 将变量 $val 传递给 awk,然后当它小于 1 时,打印“小于 1”
使用bc
。将你要求值的表达式写入bc
的标准输入,它会输出结果。在这种情况下,如果为假,布尔表达式将产生 0,如果为真,则产生 1。
if [[ $(echo "$val < 1" | bc) == 1 ]]; then
echo less than 1
fi
由于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