Shell下的數字比較及計算

helloxchen發表於2010-10-21
比較:
方法一: if [ ${A} -lt ${B} ]; then …
這是最基本的比較方法,使用lt(小於),gt(大於),le(小於等於),ge(大於等於),優點:還沒發現;缺點:只能比較整數,使用lt,gt等不直觀
方法二: if ((${A} < ${B})) then …
這是CShell風格比較,優點:不用使用lt,gt等難記的字串;缺點:還是隻能比較整數
方法三: if (echo ${A} ${B} | awk ‘!($1>$2){exit 1}’) then …
這是使用awk比較,優點:可以比較小數;缺點:表示式太複雜,難記
方法四: if (echo ${A} – ${B} | bc -q | grep -q “^-”); then …
這是使用bc計算比較,優點:可以比較小數;缺點:表示式更復雜,難記

計算:
方法一:typeset C=$(expr ${A} + ${B});
SHELL中的基本工具,優點:方便檢測變數是否為數字;缺點:只能計算整數,且只能計算加減法,不能計算乘除法
方法二:let “C=${A}+${B}”; 或 let “C=A+B”
內嵌命令計算,優點:能計算乘除法及位運算等;缺點:只能計算整數
方法三:typeset C=$((A+B))
CShell風格的計算,優點:能計算乘除法及位運算等,簡介,編寫方便;缺點:不能計算小數
方法四:typeset C=${echo ${A} ${B} | awk ‘{print $1+$2}’)
使用awk計算,優點:能計算小數,可以實現多種計算方式,計算靈活;缺點:表示式太複雜
方法五:typeset C=${echo ${A} + ${B} | bc -q)
使用awk計算,優點:能計算小數,計算方式比awk還多,計算靈活;缺點:表示式太複雜,小數點後面的位數必須使用scale=N來設定,否則可能會將結果截斷為整數
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24790158/viewspace-1040140/,如需轉載,請註明出處,否則將追究法律責任。

相關文章