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 09:22
下一篇 2016-08-15 09:24

相關推薦

  • 數組的基本應用

                                   數組 變量:存儲單個元素的內存空間v 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。v 數組名和索引 索引:編號從0…

    Linux干貨 2016-08-24
  • 網卡別名與bonding

    網絡接口配置-bonding Bonding簡介 Bonding 就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高 可用或者負載均衡。然,直接給兩塊網卡設置同一IP地址 是不可能的。通過bonding,虛擬一塊網卡對外提供連接, 物理網卡的被修改為相同的MAC地址。 Bonding模式 Mode 0 (balance-rr) 輪轉(Round-robi…

    Linux干貨 2016-09-05
  • Linux用戶和組管理及相關命令詳解

        概要:在學習Linux的初級階段,用戶管理是基礎管理的重要部分,任何命令的運行,系統的正常運轉,均離不開用戶管理的內容,本篇就為大家介紹下Linux用戶管理的一些基礎概念和一些基礎命令的用法。內容主要分為以下三個部分:        &nbs…

    Linux干貨 2016-08-02
  • linux文件管理命令及用法

    Linux目錄和路徑   說到linux的文件管理,就不得不說文件的路徑,在linux系統中,路徑分為絕對路徑和相對路徑:絕對路徑是從根目錄/開始的,相對路徑是以 . 或 ..開始的.  .  :表示當前目錄; ..  :表示當前目錄的上一級目錄; –   :表示前一個工作目錄; ~ &…

    Linux干貨 2016-11-06
  • https搭建

    https             http over ssl = https 443/tcp                 ssl: v3           &nb…

    Linux干貨 2016-06-28
  • CentOS6啟動流程

    CentOS 6 啟動流程 | root密碼重置 | 添加系統服務 一、CentOS 6 啟動流程:     1)POST加電自檢         Power-On-Self-Test,主板在接通電源后,系統首先由BIOS程序來對對CPU、…

    Linux干貨 2016-09-08

評論列表(1條)

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

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

欧美性久久久久