shell 比較兩個數的大小

2021-10-10 14:39:11 字數 1803 閱讀 1992

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 ...