bash變量之位置參數變量

    什么是變量

    變量是 bash 環境中非常重要的一個玩意兒,就是讓某一個特定字串代表不固定的內容就是了,講的更簡單一點,我們可以“用一個簡單的 "字眼" 來取代另一個比較復雜或者是容易變動的數據”。


    什么又是位置參數變量

    參數變量實際是屬于系統預定義變量的一種,不能修改變量名,作用也是固定的,也不能新增變量。只能修改變量的值。我們來看看下面常用的位置參數變量。 

    我們知道命令可以帶有選項與參數,例如 ls -la 可以察看包含隱藏文件的所有屬性與權限。那么 shell script 也能在腳本文件名后面帶有參數


    script 是怎么達成這個功能的呢?其實 script 針對參數已經有設置好一些變量名稱了!對應如下:

1.png

    執行的腳本文件名為 $0 這個變量,第一個接的參數就是 $1 ~ 所以,只要我們在 script 里面善用 $1的話,就可以很簡單的立即下達某些指令功能了!除了這些數字的變量之外, 我們還有一些較為特殊的變量可以在 script 內使用來調用這些參數

    $# :代表后接的參數“個數”,以上表為例這里顯示為“ 4 ”;

    $@ :代表“ "$1" "$2" "$3" "$4" ”之意,每個變量是獨立的(用雙引號括起來);

    $* :代表“ "$1c$2c$3c$4" ”,其中 c 為分隔字符,默認為空白鍵, 所以本例中代表“ "$1 $2 $3 $4" ”之意


    $n:n代表數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數需要用大括號括起來,比如${11}.

    假設我要執行一個可以攜帶參數的 script ,執行該腳本后屏幕會顯示如下的數據:

    程序的文件名為何?

    共有幾個參數?

    若參數的個數小于 2 則告知使用者參數數量太少

    全部的參數內容為何?

    第一個參數為何?

    第二個參數為何

2.png

執行結果如下

3.png

示例2

4.png

執行后結果

5.png

這樣我們就可以把這個腳本拿來當計算機用了,可是只能拿兩個數來相加,因為我們在腳本中只定義了兩個變量,其實也沒必要這么麻煩;

注意:(加#號的行意思為注釋,但是被注釋了的行都會被忽略,除了第一行的shebang),如果需要兩位數以上的加法運算,可以使用let var=算術表達式,下圖依次為腳本中引用變量算法,命令行直接賦值算法

·.png

blob.png

6.png

作業

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

1.png

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

2.png

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

3.png

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

4.png

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

5.png

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

6.png

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

7.png

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

8.png

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

9.png

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

10.png

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

11.png

11.1.png

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

12.png

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

13.png

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

14.png

15。當磁盤利用率大于百分80時 發出警報

15.png

原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/34735

(0)
M20-1馬星M20-1馬星
上一篇 2016-08-15 09:25
下一篇 2016-08-15 09:25

相關推薦

  • Linux網絡管理之網絡配置管理和子網劃分

    配置網卡信息 獲取網卡的信息 dmesg | grep -i eth 獲取網卡芯片信息 lspci | grep -i eth 查詢IP信息 ifconfig顯示IP信息    -a:顯示包括未激活狀態的網卡信息 重啟網卡服務(每次配置完ip需要手動重啟此服務) CentOS6: servcie network restart CentO…

    Linux干貨 2016-09-07
  • bash基礎特性及用戶與組管理

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。 3、取出當前系統上被用戶當做其默認shell的最多的那個shell。 4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxuser.txt文件中。 5、取出當前主機的I…

    2017-09-29
  • 進程和進程管理工具

    進程的相關定義以及相關工具的使用

    2017-12-17
  • 硬鏈接與軟鏈接的簡述

    我們知道文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 inode 號(inode 是文件元數據的一部分但…

    Linux干貨 2016-10-20
  • N26-第二周

    一、文件管理類命令 pwd:顯示工作目錄 cd:切換目錄 cd [dir] cd: 切換回家目錄;注意:bash中, ~表示家目錄; cd ~:切換回自己的家目錄 cd ~USERNAME:切換至指定用戶的家目錄; cd -:在上一次所在目錄與當前目錄之間來回切換; 相關的環境變量 $PWD:當前工作目錄 $OLDPWD:上一次的工作目錄 file:查看文件…

    Linux干貨 2017-03-07
  • 馬哥教育網絡班21期第6周作業

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; %s/^[[:space:]]\+/#& 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符; %s/^[[:space:]]\+/ …

    Linux干貨 2016-12-05

評論列表(1條)

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

    總結的很好很詳細。再接再勵

欧美性久久久久