什么是變量
變量是 bash 環境中非常重要的一個玩意兒,就是讓某一個特定字串代表不固定的內容就是了,講的更簡單一點,我們可以“用一個簡單的 "字眼" 來取代另一個比較復雜或者是容易變動的數據”。
什么又是位置參數變量
參數變量實際是屬于系統預定義變量的一種,不能修改變量名,作用也是固定的,也不能新增變量。只能修改變量的值。我們來看看下面常用的位置參數變量。
我們知道命令可以帶有選項與參數,例如 ls -la 可以察看包含隱藏文件的所有屬性與權限。那么 shell script 也能在腳本文件名后面帶有參數
script 是怎么達成這個功能的呢?其實 script 針對參數已經有設置好一些變量名稱了!對應如下:
執行的腳本文件名為 $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
執行后結果
這樣我們就可以把這個腳本拿來當計算機用了,可是只能拿兩個數來相加,因為我們在腳本中只定義了兩個變量,其實也沒必要這么麻煩;
注意:(加#號的行意思為注釋,但是被注釋了的行都會被忽略,除了第一行的shebang),如果需要兩位數以上的加法運算,可以使用let var=算術表達式,下圖依次為腳本中引用變量算法,命令行直接賦值算法
作業
1編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。
2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中
3、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利用率最大的值
4、編寫腳本/root/bin/links.sh,顯示正連接本主機的每個遠程主機的IPv4地址和連接數,并按連接數從大到小排序
5、寫一個腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和
6、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和
7、寫一個腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件
8,寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑作為參數;如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數
9、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”
10、chmod -rw /tmp/file1,編寫腳本/root/bin/per.sh,判斷當前用戶對/tmp/fiile1文件是否不可讀且不可寫
11、編寫腳本/root/bin/nologin.sh和login.sh,實現禁止和充許普通用戶登錄系統。
12、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,先判斷是否合格IP,否,提示IP格式不合法并退出,是,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”
13、計算1+2+3+…+100的值
14、計算從腳本第一參數A開始,到第二個參數B的所有數字的總和,判斷B是否大于A,否提示錯誤并退出,是則計算之
15。當磁盤利用率大于百分80時 發出警報
原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/34735
總結的很好很詳細。再接再勵