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

shell 計(jì)算器的實(shí)現(xiàn)示例

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

簡介

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

1. 整數(shù)計(jì)算

常用符號(hào)如下:

+:加法
-:減法
*:乘法
/:除法
^:冪運(yùn)算
%:取余

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

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

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

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

        

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

echo $(( 10 / 3 ))

括號(hào)中支持變量計(jì)算

對(duì)變量做運(yùn)算(修改變量)

# 定義一個(gè)變量
n=10

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

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

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

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

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

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

expr [數(shù)字1] [運(yùn)算符號(hào)] [數(shù)字2]

2. 小數(shù)計(jì)算

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

2.1. bc 命令計(jì)算

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

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

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

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

echo "1 + 1" |bc

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

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

echo "10 / 3" |bc

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

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

2.2. awk 命令計(jì)算

awk 命令本身是用于文件操作,由于功能強(qiáng)大,但也支持計(jì)算。

比如計(jì)算:1 + 1

awk 'BEGIN{print 1 + 1}'

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

awk 也支持小數(shù)(默認(rèn)保留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 中使用的是單引號(hào),無法轉(zhuǎn)譯變量,所以只能通過 -v 定義兩個(gè)屬于 awk 本身的變量,再執(zhí)行計(jì)算。也可以直接使用變量,但需要將 awk 外圍的單引號(hào)換成雙引號(hào),里面的雙引號(hào)需要轉(zhuǎn)譯

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

也支持文件中的數(shù)據(jù)計(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 計(jì)算器的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)shell 計(jì)算器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

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

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

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

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

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

    shell wait等待命令的具體使用

    本文主要介紹了shell wait等待命令的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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寫入中文報(bào)錯(cuò)

    linux 環(huán)境 mysql寫入中文報(bào)錯(cuò)

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

    Shell 批量進(jìn)程判斷是否存在

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

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

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

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

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

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

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

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

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

最新評(píng)論