转换为数字

时间:2011-05-11 04:41:55

标签: bash shell

如何将字符串转换为数字?以下Bash脚本无法按预期工作。

#!/bin/sh

mynum="0.02"

if [[ $mynum -lt 1 ]];then
    echo "low"
else
    echo "high"
fi

错误消息

  

stack.sh:第5行:[[:0.02:语法错误:无效算术运算符(错误标记为“.02”)

3 个答案:

答案 0 :(得分:3)

问题是bash通常只支持整数运算;你需要将浮动或复杂的数学运用到dcbc

在这种情况下你可能会作弊:

case $mynum in
0 | 0.* | .* | -*)
    echo low
    ;;
*)
    echo high
    ;;
esac

但这显然不适用。

答案 1 :(得分:2)

以下对我有用。这就是您如何使用 bc 的想法。根据需要更改代码。

mynum="1.02"

d=\`echo "$mynum-1" | bc\`
if [ "${d:0:1}" = "-" ]
then
    echo "low"
else
    echo "high"
fi

答案 2 :(得分:-2)

您可以使用“<”“>”而不是-lt-gt。例如:

a=0.09;[[ $a < 1 ]] && echo low ||echo big     
low
a=1.01;[[ $a < 1 ]] && echo low ||echo big    
big