一、變量
在Linux shell腳本的變量中,分為系統定義的變量和用戶定義的變量。這些變量是用來調用一個數值或字符值。定義變量時,不需要聲明變量類型。
1、系統變量
在Linux系統中創建了并維護,通常以大寫字母定義,在腳本或終端,我們可以使用$查看或引用這些變量。
2、用戶定義的變量
shell腳本中允許我們設置并使用用戶自己定義的變量,這些變量在腳本執行時,啟用,當腳本執行完畢,變量會釋放,不再占用內存。定義變量時,注意不能超過20個字符,可以由字母、數字、和下劃線組成。最后由等號將變量賦值,當為變量賦值時,不能使用$。當使用命令為變量賦值時,要使用用反引號。
3、位置變量
當腳本需要輸入參數時,就要使用位置變量為腳本傳遞參數,在腳本中用$0,$1,$2,…按順序表示參數。其中$0表示腳本命令本身,從$1開始計算運行腳本時后面的參數。除了這些,還有一些特殊的符號,比如$*表示把傳遞給腳本的所有參數合并到一起,變成一個新的字符串,而$@則表示傳遞到腳本的所有參數,放在一起,但是各自都是獨立的字符串,互不影響。$#表示傳遞到腳本中的參數的個數。
4、算數
bash中的有多種方法可以實現算數賦值,常用的有以下三種:
(1)let A=算式
(2)A=$[算式]
(3)A=$((算式))
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型號,內存大小,硬盤大小。
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的值
echo {1..100} |tr ' ' '+' |bc
14、計算從腳本第一參數A開始,到第二個參數B的所有數字的總和,判斷B是否大于A,否提示錯誤并退出,是則計算之
原創文章,作者:zhanghuanyu,如若轉載,請注明出處:http://www.www58058.com/33544
題目重新自擬,總結好變量的知識。