1. 程式人生 > >SHELL下的數字比較及計算

SHELL下的數字比較及計算

比較: 

方法一: 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來設定,否則可能會將結果截斷為整數