国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

shell命令進行算術/數值運算的方法總結

2024-08-27 23:59:40
字體:
來源:轉載
供稿:網友

shell是linux內核系統中一個非常重要的功能了,我們可以利用 shell來進行編程了,下面一起來看看小編總結的shell命令進行算術/數值運算的方法.

shell中的變量都是以字符串的形式保存的,即使你賦值的時候給的是整形值,除非你通過declare -i來聲明變量.

在進行數值/算術運算的時候,你可能會發現下面的情況.

  1. $ x=121 
  2. $ echo $x+1 
  3. 121+1 

定義變量x,并賦值一個整形的變量,可是echo $x+1的結果卻不是我們想要的122,而是121+1,這是因為$x+1并沒有被當做算術運算,而是簡單的字符串的運算導致,那如何在shell中進行數值/算術運算呢,以下使用的shell為bash shell.

  1. 方法一:let命令 
  2. $ let "x=x+1" 
  3. $ echo $x 
  4. 122 
  5. 方法二:$[ ] 
  6. $ echo $[x-1] 
  7. 121 
  8. $ echo $x 
  9. 122 
  10. 方法三:$(( )) 
  11. $ echo $((x-1)) 
  12. 121 
  13. $ echo $x 
  14. 122 
  15. 方法四:declare -i 
  16. $ declare -i x 
  17. $ echo $x+1 
  18. 122+1 
  19. $ x=$x+1 
  20. $ echo $x 
  21. 123 

通過declare聲明變量x之后,需要重新給x賦值后,x才能得到算術運算的結果.

5.加雙括號的

  1. count=0 
  2. ((count++)) 

6.使用expr命令

  1. count=0 
  2. count=`expr $count + 1` 

7.使用bc命令

  1. count=0 
  2. count= `echo "$count + 1"|bc` 

介紹:bc是linux下的一個簡單計算器,支持浮點數計算,在命令行下輸入bc即進入計算器程序,而我們想在程序中直接進行浮點數計算時,利用一個簡單的管道即可解決問題.

注意:

1)經測試bc支持除位操作運算符之外的所有運算符.

2)bc中要使用scale進行精度設置.

3)浮點數計算實例.

  1. count=3.11 
  2. count=`echo "scale=2;$count*3"|bc` 
  3. echo $count 
  4. 輸出結果為9.33 

8.使用awk計算

echo $var 1| awk '{printf("%d/n", $1+$2)}'

補充:

  1. ((i=$j+$k))    等價于 i=`expr $j + $k` 
  2. ((i=$j-$k))     等價于   i=`expr $j -$k` 
  3. ((i=$j*$k))     等價于   i=`expr $j /*$k` 
  4. ((i=$j/$k))     等價于   i=`expr $j /$k` 

Let expressions 執行一個或多個表達式,表達式中的變量前不必有$.如果表達式中包含了空格或其他特殊字符,則必須引起來.

例:let “I = I + 1” 或 let i=i+1

算術運算符指的是可以在程序中實現加、減、乘、除等數學運算的運算符,Shell中常用的數學運算符如下所示.

  1. — +:對兩個變量做加法。 
  2. — -:對兩個變量做減法。 
  3. — *:對兩個變量做乘法。 
  4. — /:對兩個變量做除法。 
  5. — **:對兩個變量做冪運算。 
  6. — %:取模運算,第一個變量除以第二個變量求余數。 
  7. — +=:加等于,在自身基礎上加第二個變量。 
  8. — -=:減等于,在第一個變量的基礎上減去第二個變量。 
  9. — *=:乘等于,在第一個變量的基礎上乘以第二個變量。 
  10. — /=:除等于,在第一個變量的基礎上除以第二個變量。 
  11. — %=:取模賦值,第一個變量對第二個變量取模運算,再賦值給第一個變量。 

在使用這些運算符時,需要注意到運算順序的問題,例如輸入下面的命令,輸出1+2的結果.

echo 1+2

Shell并沒有輸出結果3,而是輸出了1+2,在shell中有三種方法可以更改運算順序,— 用expr改變運算順序,可以用echo `expr 1 +2`來輸出1+2的結果,用expr表示后面的表達式為一個數學運算,需要注意的是,`并不是一個單引號,而是“Tab”鍵上面的那個符號.

— 用let指示數學運算。可以先將運算的結果賦值給變量b,運算命令是b=let 1 + 2。然后用echo$b來輸出b的值。如果沒有let,則會輸出1+2。

— 用$[]表示數學運算。將一個數學運算寫到$[]符號的中括號中,中括號中的內容將先進行數學運算。例如命令echo$[1+2],將輸出結果3。

下面是一個shell程序實例,實現數學函數S=3(xy)+4x2+5y+6的運算。在程序中以位置變量的方式輸入x與y的值。程序的編寫步驟如下所示。

在主菜單中打開一個終端。在終端中輸入“vim”命令打開VIM,在VIM中按“i”鍵進入插入模式,然后輸入下面的代碼.

代碼4-2  數學運算實例:/源文件/04/4.4.sh

  1. #!/bin/bash 
  2. #4.4.sh 
  3. s=0                 #定義一個求和變量,初值為0。 
  4. t=`expr$1**$2`      #用expr改變運算順序,求x的y次方。 
  5. t=$[t*3]            #t乘以3。 --Vevb.com
  6. s=$[s+t]            #結果相加。 
  7. t=$[$1**2]          #求x的平方。 
  8. t=$[t*4]            #結果乘以4。 
  9. s=$[s+t]            #結果相加。 
  10. t=`expr$2*5`        #求5y的值。 
  11. s=$[s+t]            #結果相加。 
  12. s=$[s+6]            #結果加上6。 
  13. echo$s              #輸出結果。 
  14. echo$((a%b))        #取余 

在這個程序中,需要注意算術運算的寫法,如果沒有expr或$[]更改運算順序,則會將運算式以字符串的形式賦值,而不會賦值運算結果.

按“Esc”鍵返回到普通模式,然后輸入“:w 4.4.sh”保存文件,輸入“:q”命令,按“Enter”鍵退出VIM.

在終端中,輸入下面的命令對4.4.sh文件添加可執行權限.

chmod +x 4.4.sh

輸入下面的命令運行程序,在命令中需要輸入兩個參數。

./4.4.sh 2 4

程序會完成S=3(xy)+4x2+5y+6的數學運算并輸出結果.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潼南县| 衡阳市| 永兴县| 新宁县| 金昌市| 教育| 关岭| 黄梅县| 攀枝花市| 麻江县| 洞头县| 昭平县| 教育| 温州市| 汤阴县| 平江县| 山东省| 商洛市| 阳新县| 奎屯市| 安阳县| 阳信县| 雅江县| 时尚| 武山县| 襄城县| 车险| 河曲县| 凤庆县| 印江| 土默特右旗| 景洪市| 东安县| 巴彦县| 朝阳市| 通海县| 化德县| 正宁县| 玉龙| 霍林郭勒市| 肥东县|