SHELL腳本編程之變量的種類

  1. 變量

    在進行腳本編程的時候,經常會使用到不同類型的變量,根據變量的生效范圍,可大致分為以下的幾類:

    • 本地變量:生效范圍為當前shell進程,對當前shell之外的其他shell進程,包括當前shell進程的子shell進程都是無效的,它的作用域就是當前shell進程

      blob.png

    • 環境變量:生效范圍是當前shell進程及其子進程

      blob.png

    • 局部變量:生效范圍是當前shell進程中某段代碼(通常為函數)

    • 位置變量:$1,$2…表示,用于讓腳本在腳本代碼中調用通過命令行傳遞給它的參數

      blob.png

    • 特殊變量:$?,$0,$*,$@,$#

    位置變量:在腳本代碼中調用通過命令行傳遞給腳本的參數

    • $1,$…:對應第1,第2等參數,shift[n]換位置

      blob.png

      blob.png

    • $0:命令本身

      blob.png

    • $*:傳遞給腳本的所有參數,全部參數合為一個字符串

    • $@:傳遞給腳本的所有參數,每個參數為獨立字符串

      blob.png

      blob.png

    • $#:傳遞給腳本的參數的個數

      注:$@ $* 只有在被雙引號包起來的時候才會有差異

    $@和$*都表示傳遞給腳本的所有參數,當如上圖中這樣使用時,它們的作用效果一樣,但當引用的時候分別加上參數時,它們兩個就有了區別,如下圖:

    blob.png                    blob.png blob.png

    從上圖結果可以看出,使用了"$@"的位置變量,其輸出結果把輸入的三個數字當作了一個字符串,捆綁在了一起,所以輸入了三個數,但是就顯示了第一個數,而且第一個數就把所有數當作一個字符串輸出,第二第三個數就沒有輸出,使用了"$*"的位置變量,它的輸出結果就是正常的,雖然最后兩者輸出結果一樣,但兩者還是存在著是否當成一個整體輸出處理的區別

  2. 習題

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

    blob.png

    blob.png

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

    blob.png

    blob.png

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

    blob.png

    blob.png

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

    blob.png
    blob.png

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

    blob.png

    blob.png

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

    blob.png

    blob.png

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

    blob.png

    blob.png

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

    blob.png

    blob.png

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

    IP地址不可訪問”

    blob.png

    blob.png

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

    blob.png

    blob.png

    blob.png

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

    blob.png

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

    blob.png

    blob.png

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

    blob.png

    blob.png

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

blob.png

blob.png

blob.png

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

(0)
Stupid_LStupid_L
上一篇 2016-08-12 14:45
下一篇 2016-08-12 16:06

相關推薦

  • Nginx的編譯安裝

    nginx.html Nginx的編譯安裝 一、Nginx的特點 二、獲取并編譯Nginx 三、配置主頁面 四、配置編譯文件時的選項及模塊 一、Nginx的特點 1、Nginx 專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率 。它支持內核 Poll 模型,能經受高負載的考驗,有報告表明能支持高達 50,000 個并發連接數。 2、Nginx 具…

    Linux干貨 2016-03-20
  • Redis基于Sentinel哨兵高可用方案

    下載最新redis版本,當前最新版本為  2.8.19  2014-12-30 安裝redis 首頁地址:http://redis.io/ 最新穩定版下載地址: http://download.redis.io/releases/redis-2.8.19.tar.gz # tar -xvf redis-2.8.19.tar.gz # cd…

    2015-03-03
  • N25-第一周 總結

    linux bassic The first week of blogging 概要 計算機與操作系統、linux發行版及他們之間聯系與區別、Linux的哲學思想、linux系統上命令使用格式及基礎命令介紹、linux命令幫助說明、FHS 一、計算機與操作系統 什么是計算機? 電子計算機(computer),亦稱電腦,是一種利用電子學原理,根據一系列指令對數…

    Linux干貨 2016-12-04
  • rpm包管理

    前言    RPM(簡稱RPM,全稱為The RPM Package Manager)是在Linux下廣泛使用的軟件包管理器。RPM此名詞可能是指.rpm的文件格式的軟件包,也可能是指其本身的軟件包管理器(RPM Package Manager)。最早由Red Hat研制,現在也由開源社區開發。RPM通常隨附于Linux發行版,…

    Linux干貨 2015-05-13
  • Linux程序包管理之RPM

    前言 Linux平臺上常見的軟件包格式主要有三種,分別是源碼格式包、通用二進制格式包和rpm格式包本文主要講解rpm格式包安裝及管理。RPM是Redhat Package Manager的縮寫,是由Redhat公司開發的Linux軟件包管理具,因其便捷的管理方式與開源思想,逐漸被其他Linux發行商所采用,現已成Linux平臺下通用的軟件包管理方式。 rpm…

    Linux干貨 2015-03-28
  • Linux系統分區管理

    管理分區     查看系統中的分區4種方式 [root@localhost ~]# ls /dev/sd* [來自內存] [root@localhost ~]# cat /proc/partitions [root@localhost ~]# lsblk /dev/sda ?/dev/sda1 ?/dev/sda2 ?/dev/sda3 …

    Linux干貨 2017-12-02

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-16 14:45

    文章層次結構分明,態度端正,加油!!!

欧美性久久久久