欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell 計算器的實現(xiàn)示例

 更新時間:2024年01月02日 09:37:35   作者:一只勤勞的耗子  
在使用Linux時,我們有時會需要做一些計算,那么我們就可能需要用到計算器,本文主要介紹了shell 計算器的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下

簡介

shell 編程中的 $(( )) 、$[ ] 和 expr 僅支持整數(shù)運算,不支持小數(shù)運算,如果除法的結(jié)果為小數(shù),那么按取整處理。小數(shù)計算需要依賴命令,這里介紹 bc、awk 兩個命令的計算方法。

1. 整數(shù)計算

常用符號如下:

+:加法
-:減法
*:乘法
/:除法
^:冪運算
%:取余

shell 通過 $(( )) 或 $[ ] 來計算整數(shù),比如 1+1

echo $(( 1 + 1 ))
echo $[ 1 + 1 ]

但如果將0作為除數(shù),那么直接報錯

如果計算中出現(xiàn)非變量的字母,那么這個字母會被當(dāng)做 0 處理

        

注意:$(( )) 和 $[ ] 不支持小數(shù)運算,如果除法運算的結(jié)果為小數(shù),那么系統(tǒng)自動取整

echo $(( 10 / 3 ))

括號中支持變量計算

對變量做運算(修改變量)

# 定義一個變量
n=10

# 將變量+1
(( n++ ))

# 查看這個變量的結(jié)果
echo ${n}

直接對變量做計算可以直接使用 (( )),舉幾個常用的方法

(( n++ ))    # 表示變量n+1
(( n-- ))    # 表示變量n-1
(( n+=5 ))   # 表示變量n+5
(( n-=5 ))   # 表示變量n-5
(( n*=5 ))   # 表示變量n*5
(( n1 = n2 + 1 ))    # 表示變量n1 = 變量n2 + 1

所有的計算 n=n+1 都可以簡化成 n+=1,其他計算方式同理。  

除了直接使用 $(( )) 或 $[ ] 來運算,shell 還支持 expr 來運算整數(shù)(方法都一樣)

expr [數(shù)字1] [運算符號] [數(shù)字2]

2. 小數(shù)計算

由于 $(( )) 和 $[ ] 不支持小數(shù)運算,我們需要借助其他命令來實現(xiàn)。這里介紹2個命令 bc 和 awk

2.1. bc 命令計算

bc 是 Linux 中一個用于計算的命令,支持高精度的數(shù)學(xué)計算,可以進行大多數(shù)基本的數(shù)學(xué)運算,包括加、減、乘、除、取模、指數(shù)、三角函數(shù)等。

執(zhí)行 bc 會出現(xiàn)一個交互界面(quit 退出)

在這個交互界面中可以執(zhí)行數(shù)學(xué)運算,回車鍵表示 "="

在腳本中我們一般不會用到交互界面,那么可以使用 bc 結(jié)合 echo 來使用。比如計算 1+1

echo "1 + 1" |bc

使用 echo 輸出一串字符,再使用管道符傳遞給 bc 使其計算。就類似于這樣

如果不指定小數(shù)點位數(shù),除法的結(jié)果為小數(shù)也會直接取整

echo "10 / 3" |bc

如果需要顯示小數(shù)位數(shù),那么在 echo 中指定 scale=n(n表示位數(shù))

echo "scale=2; 10 / 3" |bc

2.2. awk 命令計算

awk 命令本身是用于文件操作,由于功能強大,但也支持計算。

比如計算:1 + 1

awk 'BEGIN{print 1 + 1}'

awk 本身是對文件操作,如果不指定文件需要加上 BEGIN 字符來實現(xiàn)計算。      

awk 也支持小數(shù)(默認保留5為)

awk 'BEGIN{print 10 / 3}'

指定2位小數(shù)

awk 'BEGIN{printf "%.2f", 10 / 3}'

使用變量

a=10
b=20
awk -v "a=${a}" -v "b=$" 'BEGIN{printf "%.2f", a / b}'

由于 awk 中使用的是單引號,無法轉(zhuǎn)譯變量,所以只能通過 -v 定義兩個屬于 awk 本身的變量,再執(zhí)行計算。也可以直接使用變量,但需要將 awk 外圍的單引號換成雙引號,里面的雙引號需要轉(zhuǎn)譯

a=10
b=20
awk "BEGIN{printf \"%.2f\", ${a} / $}"

也支持文件中的數(shù)據(jù)計算

【求和】

awk '{sum+=$1} END{print sum}' 文件名

【求平均數(shù)】

awk '{sum += $1} END{print sum/NR}' 文件

【求最大值】

awk 'NR==1 {max=$1} $1>max {max=$1} END{print max}' 文件

【求最小值】

awk 'NR==1 {min=$1} $1<min {min=$1} END {print min}' 文件名

【將第1列的所有值 +10 】

awk '{print $1 + 10}' 文件名

【讀取文件偶數(shù)行】

awk 'NR % 2 == 0' 文件名

到此這篇關(guān)于shell 計算器的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)shell 計算器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:

相關(guān)文章

  • 用shell腳本防ssh和vsftpd暴力破解的詳解講解

    用shell腳本防ssh和vsftpd暴力破解的詳解講解

    新近剛上的FTP備份服務(wù)器,例行檢查/var/log/secure日志時,發(fā)現(xiàn)不少sshd和vsftpd失敗認證信息,很明顯有人想用暴力破解工具竊取密碼,所以需要編寫一個安全腳本防止
    2014-01-01
  • Linux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法

    Linux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法

    下面小編就為大家?guī)硪黄狶inux 分區(qū)初始化為物理卷,把物理卷加入卷組的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • shell wait等待命令的具體使用

    shell wait等待命令的具體使用

    本文主要介紹了shell wait等待命令的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 編寫shell腳本將VPS上的數(shù)據(jù)備份到Dropbox網(wǎng)盤的方法

    編寫shell腳本將VPS上的數(shù)據(jù)備份到Dropbox網(wǎng)盤的方法

    這篇文章主要介紹了編寫shell腳本將VPS上的數(shù)據(jù)備份到Dropbox網(wǎng)盤的方法,注意Dropbox在國內(nèi)訪問的網(wǎng)絡(luò)相關(guān)問題,需要的朋友可以參考下
    2015-07-07
  • linux 環(huán)境 mysql寫入中文報錯

    linux 環(huán)境 mysql寫入中文報錯

    本篇文章主要介紹了linux 環(huán)境 mysql寫入中文報錯的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Shell 批量進程判斷是否存在

    Shell 批量進程判斷是否存在

    本文主要介紹了Shell 批量進程判斷是否存在,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 深入理解Shell輸出顏色與控制

    深入理解Shell輸出顏色與控制

    在Linux shell或者平時echo輸出時有時為了區(qū)分某些字符串的重要性,往往對其輸出內(nèi)容添加顏色以醒目區(qū)分。下面這篇文章就主要介紹了關(guān)于Shell輸出顏色與控制,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Linux下文件剪切的shell腳本實現(xiàn)代碼

    Linux下文件剪切的shell腳本實現(xiàn)代碼

    本篇文章主要介紹了Linux下文件剪切的sh腳本實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 查看linux服務(wù)器上jdk的安裝路徑方法

    查看linux服務(wù)器上jdk的安裝路徑方法

    這篇文章主要介紹了查看linux服務(wù)器上jdk的安裝路徑方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 在linux上定期執(zhí)行命令、腳本(cron,crontab,anacron)

    在linux上定期執(zhí)行命令、腳本(cron,crontab,anacron)

    在linux下,如果想要在未來的某個時刻執(zhí)行某個任務(wù),并且在未來的每一個這樣的時刻里都要執(zhí)行這個任務(wù)。這篇文章主要介紹了在linux上定期執(zhí)行命令、腳本(cron,crontab,anacron)的相關(guān)知識,需要的朋友可以參考下
    2018-07-07

最新評論