如何将字符串转换为数字?以下Bash脚本无法按预期工作。
#!/bin/sh
mynum="0.02"
if [[ $mynum -lt 1 ]];then
echo "low"
else
echo "high"
fi
错误消息
stack.sh:第5行:[[:0.02:语法错误:无效算术运算符(错误标记为“.02”)
答案 0 :(得分:3)
问题是bash
通常只支持整数运算;你需要将浮动或复杂的数学运用到dc
或bc
。
在这种情况下你可能会作弊:
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