shell中比較兩個數的大小,一般可以使用大小於號:">"、"="、"<=",和-ge、-gt、-le、-lt
比如:大於輸出1,否則輸出0
[root@localhost64 ~]
# [ 3 -gt 2 ]&& echo 1 ||echo 0
1[root@localhost64 ~]
# [ 3 -gt 20 ] && echo 1 ||echo 0
0[root@localhost64 ~]
# [ 3 > 2 ]&& echo 1 ||echo 0
1
這種對於-gt的比較方式來說只能比較整數的大小,如果遇到浮點數,或者說是小數,就會報錯:
[root@localhost64 ~]
# [ 3.0 -gt 2.0 ]&& echo 1 ||echo 0
-bash: [: 3.0: integer expression expected
0
對於大於號這種方式,只能說"看起來沒問題"
[root@localhost64 ~]
# [ 3.0 > 2.0 ]&& echo 1 ||echo 0
1
問題就在於:它的浮點數比較是按位比的:
[root@localhost64 ~]
# [ 3.0 > 20.0 ] && echo 1 ||echo 0
1[root@localhost64 ~]
# [ 3.0 > 3.12 ] && echo 1 ||echo 0
1
3.0的第一位是3, 20.0的第一位是2,3>2所以被判定為3.0>20.0,判斷出錯
bc 命令是任意精度計算器語言,通常在linux下當計算器用,類似基本的計算器, 使用這個計算器可以做基本的數**算
這樣就可以了:
[root@localhost64 ~]
# [ `echo "3.0 > 20.0"|bc` -eq 1 ] && echo 1 ||echo 0
0[root@localhost64 ~]
# [ `echo "3.0 > 3.12"|bc` -eq 1 ] && echo 1 ||echo 0
0
echo 「3.0 > 20.0」|bc 這條命令,如果條件成立,返回的結果就是1,否則就是0
使用bc命令也可以實現加減乘除,除法是整除:
[root@localhost64 ~]
# echo "2.00 / 4.00"|bc
0[root@localhost64 ~]
# echo "2.00 + 4.00"|bc
6.00
[root@localhost64 ~]
# echo "2.00 - 4.00"|bc
-2.00
[root@localhost64 ~]
# echo "2.00 * 4.00"|bc
8.00
[root@localhost64 ~]
# echo "2.00 / 4.00"|bc
0[root@localhost64 ~]
# echo "10.00 / 4.00"|bc
2
shell 程式設計入門 比較兩個數的大小
shell 程式設計入門 bin sh the function used to compare the two numbers vara 1 varb 2 if z vara z varb then echo please input hte two numbers exit 1 fiif var...
比較兩個數的大小
一 問題 有兩個變數a,b 找出兩個數中間比較大的 二 解決方案 方法1 取平均值法 大的為 a b abs a b 2 小的為 a b abs a b 2 int fmax1 int a,int b 方法2 不使用abs ab時,b a 0,所以前面為a a b 後面為a b,那麼結果就是a in...
不用if比較兩個數大小
一 問題 有兩個變數a,b,不用 if switch或者其它判斷語句,找出兩個數中間比較大的 二 解決方案 方法1 取平均值法 大的為 a b abs a b 2 小的為 a b abs a b 2 int fmax1 int a,int b 方法2 不使用abs ab時,b a 0,所以前面為a ...