在Linux系統中,用於數學運算的命令主要有expr和bc。
expr命令,全稱為"evaluate expressions",主要用於整數計算和字元串處理,例如計算字元串長度、字元串比較、字元串匹配、字元串提取等。需要注意的是,expr僅支持整數,若需進行浮點數運算,應使用bc命令。
bc命令,全稱為"Basic Calculator",是一款強大的浮點數和高精度計算工具,適用於處理各種數學運算,包括加減乘除、指數運算、取模、求平方根等。其輸入和輸出方式類似於C語言,便於執行計算。
基本用法包括直接在終端中輸入表達式並按回車鍵獲得結果。對於浮點數運算,可以通過設置"scale"變數來控制小數點後的位數。bc還支持使用變數和函數進行更復雜的計算,例如定義函數來計算圓的面積。
在進行高級運算時,bc命令能夠執行浮點運算和一些高級函數,如設定小數精度、進行進制轉換及計算平方和平方根等。
expr與bc的主要區別在於,expr僅支持整數運算,而bc支持浮點數運算及整數運算,功能更加強大。
2. Linux 閲岄潰鍛戒護琛屾墦寮璁$畻鍣 鎬庝箞杈撳叆
linux鍛戒護琛璁$畻鍣
璇︾粏鏂囨。璇 man bc
鍦╳indows涓嬶紝澶у墮兘鐭ラ亾鐩存帴榪愯宑alc錛(c:windowssystem32calc.exe),鍙浠ユ墦寮璁$畻鍣ㄣ
娉錛
calculate vt.&vi.
璁$畻錛沜alculator n. 璁$畻鍣ㄣ俢alc灝辨槸榪欎釜璁$畻鐨勭畝鍐欍
Ca鍦ㄥ寲瀛︿腑鏄浠h〃閽欏厓緔錛宑alcium
閽(20鍙峰厓緔,絎﹀彿Ca)銆備袱鑰呮湁浠涔堣仈緋誨憿錛
calculate 鏉ヨ嚜calculus,鍘熶箟鏄鍋氱畻鏈榪愮畻鐨勫皬鐭沖瓙錛屾槸calx(鐭崇伆鐭籌級鐨勫皬縐般
閭d箞鍦linux緋葷粺涓嬶紝鏈夋棤涓巜indows涓媍alc.exe綾諱技鐨勮$畻鍣ㄥ憿錛
涓嬮潰鎬葷粨linux涓嬬殑涓変釜鍛戒護錛屾潵浠嬬粛涓涓媗inux涓嬬殑璁$畻鏂規硶錛
1錛塨c
bc鍦ㄩ粯璁ょ殑鎯呭喌涓嬫槸涓浜や簰寮忕殑鎸 浠ゃ傚湪bc宸ヤ綔鐜澧冧笅錛屽彲浠ヤ嬌鐢ㄤ互涓嬭$畻絎﹀彿錛
+ 鍔犳硶
- 鍑忔硶
* 涔樻硶
/ 闄ゆ硶
^ 鎸囨暟
% 浣欐暟
濡傦細
#
bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation,
Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
3+6
<=鍔犳硶
9
4+2*3<=鍔犳硶銆佷箻娉
10
(4+2)*3<=鍔犳硶銆佷箻娉曪紙浼樺厛錛
18
4*6/8
<=涔樻硶銆侀櫎娉
3
10^3
<=鎸囨暟
1000
18%5<=浣欐暟
3+4;5*2;5^2;18/4
<=涓琛岃緭鍏ュ氫釜璁$畻錛岀敤;鐩擱殧銆
7
10
25
4
quit <=閫鍑
# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation,
Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=3
<=璁懼皬鏁頒綅
1/3
.333
quit
浠ヤ笂鏄浜や簰鐨勮$畻錛岄偅鍒頒篃鍙浠 涓嶈繘琛屼氦浜掕岀洿鎺ヨ$畻鍑虹粨鏋溿
A.鐢╡cho鍜寍娉曪紝濡傦細
# echo "(6+3)*2" |bc
18
# echo 15/4 |bc
3
# echo "scale=2;15/4"
|bc
3.75
# echo "3+4;5*2;5^2;18/4"
|bc
7
10
25
4
鍙﹀栵紝
bc闄や簡scale鏉ヨ懼畾灝忔暟浣嶄箣澶栵紝榪樻湁ibase鍜宱base鏉ュ叾綆姍樺畠榪涘埗鐨勮繍綆椼
濡傦細
//灝16榪涘埗鐨凙7杈撳嚭涓10榪涘埗, 娉ㄦ剰錛岃嫳鏂囧彧鑳藉ぇ鍐
# echo "ibase=16;A7"
|bc
167
//灝2榪涘埗鐨11111111杞鎴10榪涘埗
# echo "ibase=2;11111111"
|bc
255
//杈撳叆涓16榪涘埗錛岃緭鍑轟負2榪涘埗
# echo "ibase=16;obase=2;B5-A4"
|bc
10001
瀵逛簬bc榪樻湁琛ュ厖錛屽湪bc --help涓榪樺彲浠ュ彂鐜幫細bc鍚庡彲浠ユ帴鏂囦歡鍚嶃傚傦細
# more calc.txt
3+2
4+5
8*2
10/4
# bc calc.txt
5
9
16
2
2)expr
expr鍛戒護鍙涓嶅厜鑳借$畻鍔犲噺涔橀櫎鍝︼紝榪樻湁寰堝琛ㄨ揪寮錛岄兘鍙浠ヨ$畻鍑虹粨鏋滐紝涓嶈繃鏈変竴鐐歸渶瑕佹敞鎰忥紝鍦ㄨ$畻鍔犲噺涔橀櫎鏃訛紝涓嶈佸繕浜嗕嬌鐢ㄧ┖鏍煎拰杞涔夈備笅
闈㈢洿鎺ョ敤瀹炰緥鏉ヤ粙緇嶄竴涓媏xpr鐨勮繍綆楋紝濡傦細
# expr 6 +
3
錛堟湁絀烘牸錛
9
# expr2 *
3
錛堟湁杞涔夌﹀拹鍜愬仛鍙鳳級
6
# expr 14 % 9
5
# a=3
# expr
$a+5
錛堟棤絀烘牸錛
3+5
# expr $a +
5
錛堝彉閲忥紝鏈夌┖鏍礆級
8
#
a=`expr 4 + 2`
echo $a
6
# expr $a + 3
9
鍙﹀栵紝expr瀵逛簬瀛椾覆鐨勬搷浣滐紙璁$畻錛変篃鏄寰堟柟渚胯琛$殑錛屽傦細
//瀛椾覆闀垮害
#expr length
"yanggang.cublog.cn"
21
//浠庝綅緗澶勬姄鍙栧瓧涓
# expr substr "yanggang.cublog.cn"
1 11
yanggang
//瀛椾覆寮濮嬪
# expr index
"yanggang.cublog.cn" cu
13
3)dc
鐢╠c鏉ヨ繘琛岃$畻鐨勪漢鍙浠ヤ笉澶氾紝鍥犱負dc涓巄c鐩告瘮瑕佸嶆潅錛屼絾鏄鍦ㄨ繘琛岀畝鍗曠殑璁″垝鏃訛紝鏄宸涓嶅氱殑錛屼笉綆楅毦銆俤c涓哄帇鏍堟搷浣滐紝榛樿や篃鏄浜や簰鐨勶紝浣
涔熷彲浠ョ敤echo鍜寍鏉ラ厤鍚堟墦綆椼
濡傦細
# dc
3
2+
p
5
4*
p
20
quit
# echo 3 2+ 4* p |dc
20
4)echo
echo鐢ㄦ潵榪涜屽洖鏄撅紝鏄鍛ㄧ煡鐨勪簨銆備笂闈涔熼厤鍚坆c鏉ヨ繘琛岃$畻銆傚叾瀹瀍cho涔熷彲浠ュ崟鐙榪涜岀畝鍗曠殑璁$畻錛屽傦細
# echo $((3+5))
8
# echo $(((3+5)*2))
16
echo榪樺彲浠ヨ繘琛屽彉閲忕殑璁$畻錛屽傦細
# a=10
# b=5
# echo $(($a+$b))
15
# echo $a+$b
10+5
# echo $a+$b |bc
15
//璁$畻鍓嶅ぉ鐨勬棩鏈
# echo `date
+%Y%m%d`
20090813
# echo `date +%Y%m%d`-2
20090813-2
# echo `date +%Y%m%d`-2
|bc
20090811
5)AWK
awk鍦ㄥ勭悊鏂囦歡鐨勬椂錛屽彲浠ヨ繘琛岃繍綆楋紝閭e綋鐒朵篃鍙浠ュ崟鍗曠敤鏉ヨ$畻浜嗭紝濡傦細
# awk 'BEGIN{a=3+2;print
a}'
5
# awk 'BEGIN{a=(3+2)*2;print
a}'
10
Awk 鏀鎸佸父瑙佺殑榪愮畻絎錛 濡 + 錛堝姞錛夛紝- 錛堝噺錛夛紝 * 錛堜箻錛夛紝 / 錛堥櫎錛夛紝 ^ 鎴 ** 錛涔樻柟錛夛紝 % 錛堝彇妯★級
絳夌瓑銆 姝ゅ栵紝 awk 涔熸彁渚涗簡涓浜涘父鐢ㄧ殑鏁板﹀嚱鏁, 姣斿 sin(x), cos(x), exp(x), log(x),
sqrt(x), rand()銆 浣跨敤榪欎簺榪愮畻絎﹀拰鍑芥暟鍙浠ョ洿鎺ヨ繘琛屼竴浜涚畝鍗曠殑榪愮畻錛
# echo | awk '{print
8+6}'
14
# echo | awk '{print
8/6}'
1.33333
# echo | awk '{print
9%5}'
4
璇鋒斁蹇冧嬌鐢
鏈夐棶棰樼殑璇濊瘋拷闂
婊℃剰璇峰強鏃墮噰綰籌紝璋㈣阿