在liuux中,當你想要做什麼事情的時候,可以通過輸入命令傳遞給計算機,但也會有很多時候,我們需要計算機/服務器完成相同的任務,如果我們再一次一次輸入命令執行的話,就會非常的不方便,要想讓所有的事情變得簡單並且自動化,我們就可以藉助shell腳本來實現,也就是說腳本語言是我們與計算機交流的一種便捷途徑。
##腳本基礎
1)內容:包含一些命令或聲明,並符合一定格式的文本文件。
2)格式要求:首行shebang機制
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/per1
3)腳本的用途:
*自動化常用的命令
*執行系統管理和故障排除
*創建簡單的應用程序
*處理文本或文件
4)創建腳本過程
*使用文本編輯器來創建文本文件
-可以添加註釋,註釋以#開頭
*運行腳本
-給予執行權限,在命令上指定腳本的絕對或相對路徑
-直接運行解釋器,將腳本作爲解釋器程序的參數運行
##語句控制 (腳本過程編輯語言有三種過程)
1)順序執行
*不需要特定的控制,只需要按照語句依次執行即可
2)選擇執行
*需要特定的控制語句(如 if,case等)來判斷執行
-選擇執行還可以包括單分子、雙分支、多分支結構,示例如下
1、
2、
腳本自上而下逐條件的判斷,第一次判斷到“假”條件時,執行分支判斷,直至結束。
3)循環執行
* 將某代碼段重複運行多次,重複循環的次數可以事先已知,也可以事先未知,設定進入和退出循環的條件。(包括for,while,until)
-for 循環
1、格式:
for 變量名 in 列表;do
循環體
done
2、執行機制:
依次將列表中的元素賦值給“變量名”,每次賦值後執行一次循環,直到列表中的元素耗盡,循環結束。
3、列表生成方式:
(1)直接給出列表(2)整數列表(3)返回列表的命令(4)使用glob,如:*.sh(5)變量引用
4、特殊格式:
for ((控制變量初始化;條件判斷表達式;控制變量的修正表達式))
do
循環體
done
5、示例:
特殊格式示例
-while 循環
1、格式
while CONDITION;do
循環體
done
2、CONDITION:循環控制條件;進行循環之前,先做一次判斷,每一次循環之後再次做判斷,條件爲“True”,則執行一次循環,直到條件測試狀態爲“false”時結束循環。
3、示例:
-until 循環
1、格式:
until CONDITION;do
循環體
done
2、CONDITION:循環控制條件;進行循環之前,先做一次判斷,每一次循環之後再次做判斷,爲“false”,則執行一次循環,直到條件測試狀態爲“true”時結束循環。
3、示例:
-select 循環
1、格式
select variable in list
do
循環體
done
2、select 循環主要是用於創建菜單,按數字順序排列的菜單項將顯示標準錯誤上,並顯示PS3提示符,等待用戶輸入。用戶輸入菜單列表中的莫個數字,執行相應的命令(用戶輸入被保存在內置變量REPLY中)
3、select 是個無限循環,因此要記住用break 命令退出循環,或者用exit命令結束循環,select 經常與 case 聯合使用。
4、示例:
*控制語句:
-continue [N]:提前結束第N層的本輪循環,而直接進入下一輪的判斷,最內層爲第一層。
-break [N]:提前結束第N層循環,最內層爲第一層。
-shift [N]:用於將參數列表list左移指定次數,缺省爲左移一次。
##函數
函數function 是由若干條shell命令組成的語句塊,實現代碼重用和模塊化編輯,它不是一個單獨的進程,不能獨立運行,而是shell程序的一部分。
1)語法 (有兩部分組成,函數名和函數體),三種語法
*function f_name {
...函數體...
}
*function f_name () {
...函數體...
}
*f_name () {
...函數體...
}
2)函數的執行結果返回值:
*使用echo等命令進行輸出
*函數體中調用命令的輸出結果
3)函數的退出狀態碼:
*默認取決於函數執行的最後一條命令的退出狀態碼
*自定義退出狀態碼,格式爲:
-return 從函數中返回,用最後狀態命令決定返回值
-return 0 無錯誤返回。
-returu 1-255 有錯誤返回
4)使用函數方法:
函數在使用前必須定義,因此應將函數定義放在腳本開始部分,直至shell首次發現它後才能使用,調用函數僅使用函數名即可。
5)示例