在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
璇锋斁蹇冧娇鐢
链夐梾棰樼殑璇濊疯拷闂
婊℃剰璇峰强镞堕噰绾筹纴璋㈣阿