shell腳本中變量與運算及簡單編程示例

一、變量


        在Linux shell腳本的變量中,分為系統定義的變量和用戶定義的變量。這些變量是用來調用一個數值或字符值。定義變量時,不需要聲明變量類型。


1、系統變量


        在Linux系統中創建了并維護,通常以大寫字母定義,在腳本或終端,我們可以使用$查看或引用這些變量。


2、用戶定義的變量


        shell腳本中允許我們設置并使用用戶自己定義的變量,這些變量在腳本執行時,啟用,當腳本執行完畢,變量會釋放,不再占用內存。定義變量時,注意不能超過20個字符,可以由字母、數字、和下劃線組成。最后由等號將變量賦值,當為變量賦值時,不能使用$。當使用命令為變量賦值時,要使用用反引號。


3、位置變量


        當腳本需要輸入參數時,就要使用位置變量為腳本傳遞參數,在腳本中用$0,$1,$2,…按順序表示參數。其中$0表示腳本命令本身,從$1開始計算運行腳本時后面的參數。除了這些,還有一些特殊的符號,比如$*表示把傳遞給腳本的所有參數合并到一起,變成一個新的字符串,而$@則表示傳遞到腳本的所有參數,放在一起,但是各自都是獨立的字符串,互不影響。$#表示傳遞到腳本中的參數的個數。

4、算數 

        bash中的有多種方法可以實現算數賦值,常用的有以下三種:

            (1)let A=算式

blob.png

                (2)A=$[算式]

blob.png

                (3)A=$((算式))

blob.png

Linux中的運算符:+, -, *,/,%取模(取余),**(乘方),+=(自加后賦值),-=(自減),*=(自乘),/=(自除),%=(取余),++(等于+=1),–(等于-=1)

二、邏輯運算

    邏輯運算分為兩種狀態1和0,三種基本運算,與,或,非。

    與(&):兩數相與時,都為1,結果才是1,其余結果都是0

    或(|):兩數或運算時,都為0,結果才是0,其余結果都是1

    非(!):非1為0,非0為1

    短路運算

    短路與(&&):第一個為0,結果必定為0; 第一個為1,第二個必須要參與運算; 

    短路或(||):第一個為1,結果必定為1; 第一個為0,第二個必須要參與運算;

 

    異或(^):異或的兩個值,相同為假,不同為真。

三、示例

1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。


blob.png


2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中


blob.png


3、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利用率最大的值


blob.png


4、編寫腳本/root/bin/links.sh,顯示正連接本主機的每個遠程主機的IPv4地址和連接數,并按連接數從大到小排序


blob.png


5、寫一個腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和


blob.png


6、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和


blob.png


7、寫一個腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件


blob.png


8、寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑作為參數;如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數


blob.png


9、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”


blob.png


10、chmod -rw /tmp/file1,編寫腳本/root/bin/per.sh,判斷當前用戶對/tmp/fiile1文件是否不可讀且不可寫


blob.png


11、編寫腳本/root/bin/nologin.sh和login.sh,實現禁止和充許普通用戶登錄系統。


blob.png


blob.png

12、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,先判斷是否合格IP,否,提示IP格式不合法并退出,是,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”


blob.png


13、計算1+2+3+…+100的值


echo {1..100} |tr ' ' '+' |bc


14、計算從腳本第一參數A開始,到第二個參數B的所有數字的總和,判斷B是否大于A,否提示錯誤并退出,是則計算之

blob.png

原創文章,作者:zhanghuanyu,如若轉載,請注明出處:http://www.www58058.com/33544

(0)
zhanghuanyuzhanghuanyu
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • mitaka版本openstack網絡之open vSwitch

    作者:【吳業亮】 博客:http://blog.csdn.net/wylfengyujiancheng 一、硬件配置及服務拓撲1. controller節點:一塊網卡2. 網絡節點:四塊網卡。3. 計算節點:三塊網卡 controller節點1. 運行 neutron數據庫2. 運行消息隊列服務3. 運行認證。4. 運行OpenStack計算nova相關網絡…

    2018-01-22
  • awk命令詳解

    簡介: wak是一個強大的文本分析工具,也可以叫做報告生成工具。相對于grep的查找,sed的編輯,awk在對其數據分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格 為默認分隔符將每行切片,切開的部分再進行各種分析處理。 awk有三個不同的版本:awk,nawk,gawk。我們目前所使用的awk一般指gawk,gawk是AWK和GN…

    Linux干貨 2016-11-28
  • 系統基礎之shell腳本編程詳解4(數組及字符串處理,變量賦值和配置文件)

    系統基礎之shell腳本編程詳解4(數組及字符串處理,變量賦值和配置文件)     今天來講shell腳本編程的最后一些內容,數組及字符串處理,變量賦值和配置文件.這些內容也是我們經常在工作中使用到的知識點.下面讓我們來詳細了解下: 數組:   程序=指令+數據        &…

    Linux干貨 2016-08-24
  • Apache、nginx 、lighttpd性能比較

    1. web服務器簡介 1. lighttpd      Lighttpd是一個德國人領導的開源軟件,其根本的目的是提供一個專門針對高性能網站,安全、快速、兼容性好并且靈活的Web server環境         Lighttpd是一個具有非常低的…

    Linux干貨 2015-04-10
  • 馬哥教育網絡班21期-第八周課程練習

    第八周作業 1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器:集線器工作在OSI七層模型的物理層;功能是將傳輸信號再生或放大,收到數據后將數據轉發至除接收接口外的所有接口(廣播)),但是由于集線器所有端口屬于共享帶寬,屬于同一個沖突域和屬于同一個廣播域,容易產生信號沖突導致幀碎片,現今大部分集線器已經被交換機所替代; 網…

    Linux干貨 2016-09-01
  • 學習目標

    先把落下的課補上……

    Linux干貨 2016-10-31

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-15 17:31

    題目重新自擬,總結好變量的知識。

欧美性久久久久