如何將字符串轉換爲數字?下面的Bash腳本不能按預期方式工作。轉換爲數字
#!/bin/sh
mynum="0.02"
if [[ $mynum -lt 1 ]];then
echo "low"
else
echo "high"
fi
錯誤消息
stack.sh: line 5: [[: 0.02: syntax error: invalid arithmetic operator (error token is ".02")
如何將字符串轉換爲數字?下面的Bash腳本不能按預期方式工作。轉換爲數字
#!/bin/sh
mynum="0.02"
if [[ $mynum -lt 1 ]];then
echo "low"
else
echo "high"
fi
錯誤消息
stack.sh: line 5: [[: 0.02: syntax error: invalid arithmetic operator (error token is ".02")
的問題是,通常bash
僅支持整數運算;您需要將漂浮或複雜的數學運算到dc
或bc
。
您可以在這種情況下,騙取:
case $mynum in
0 | 0.* | .* | -*)
echo low
;;
*)
echo high
;;
esac
但是,這顯然不是普遍適用的。
您可以使用 「< 」「>」,而不是-lt
或-gt
。例如:
a=0.09;[[ $a < 1 ]] && echo low ||echo big
low
a=1.01;[[ $a < 1 ]] && echo low ||echo big
big
它適用於這些情況,但它不是在做浮點運算。這只是做一個字符串比較。試試'a = 11.1; [[$ a <9]] && echo'$ a <9'|| echo'$ a> = 9'' – l0b0 2011-05-11 09:41:10
@ l0b0也許有某事。錯誤。另一種方法,你可以'''echo'$ a <9「| bc \'-eq 1]' – xiaofengmanlou 2011-05-17 02:47:37
您是否必須在Bourne Shell中執行此操作?如果你正在做浮點運算,你最好用Python,Perl,... – Johnsyweb 2011-05-12 05:14:04