Shell指令碼學習筆記(三)–算術運算

來源:互聯網
上載者:User

算術運算


在求值時,如果算術式中變數不存在或空值,則該變數的值為0

不同進位的數字使用"基底#數字"的標記法,其中基底範圍為2~64

算術擴充:
如果運算式中有變數,該變數名稱之前最好不要加上$,以免該變數不存在造成文法的錯誤
如果除法的運算結果有餘數,則無條件捨去
樣本:

View Code

 1 #!/bin/bash
2 declare -i a i q s=0
3 a=${1:-255}
4 mask="128 64 32 16 8 4 2 1"
5 Bmap=
6
7  echo "1的二進位128 64 32 16 8 4 2 1"
8  for i in $mask
9  do
10 q=$((a/i))
11 s=$((s+q))
12 [ $q -gt 0 ] && Bmap=$Bmap"__1__" || Bmap=$Bmap"__0__"
13 a=$((a-q*i))
14 done
15
16 echo " $s : $Bmap"

使用外部程式expr:
好處:expr的本來作用是在“標準輸出”顯示運算式的值。利用這一特性,可以當做一個算術運算的工具。而且,由於它是外部程式,和shell的版本沒有關係,幾乎在各種os平台上都可以執行。跨平台。
使用expr時,要特別注意“運算式”中是否含有bash shell的特殊字元,如*,|,<,>,!,&,(,)等,如果有要用\予以轉義,否則出錯。其次,在“運算式”中,運算子和運算元直接至少要有一個以上的空格符隔開。
支援的運算種類:加減...,對比樣式,找出子字串的位置,取子字串,計算字串長度,視關鍵詞為一般字串等

$[]和$(())類似

declare:
事先改變變數的屬性
算式中,運算子和運算元之間不可以有空格符,要緊密串連
特殊符合不必使用\轉義
算是中,可以包含其他變數,變數之前不必加$
let與之類似

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.