一、編程原理: 1、編程介紹: 電腦只能識別二進位指令 程式=指令+數據 根據服務的重心不同,我們分為面向過程編程,面向對象編程; a) 面向過程:側重於指令的編程語言 b) 面向對象:側重於數據的編程語言 2、編程語言的分類: 高級語言、超高級語言需要翻譯成電腦可讀的語言(二級制指令) a) ...
一、編程原理:
1、編程介紹:
電腦只能識別二進位指令
程式=指令+數據
根據服務的重心不同,我們分為面向過程編程,面向對象編程;
a) 面向過程:側重於指令的編程語言
b) 面向對象:側重於數據的編程語言
2、編程語言的分類:
高級語言、超高級語言需要翻譯成電腦可讀的語言(二級制指令)
a) 解釋型:逐行翻譯,逐行執行(解釋一行、執行一行)shell、python
b) 編譯型:一次編譯,全部執行 C、C++、C#
3、編程語言的執行方式:
a) 順序執行 : 一行一行的執行
b) 迴圈執行 : for、while、until
c) 選擇執行(分支): if、case
二、shell腳本語言介紹:
1、優點:
調用os(操作系統)的命令行,來實現所有功能;
2、缺點:
沒有庫調用(區分python)
3、shell腳本包括
a) 命令**很重要**
b) 變數(全局變數、局部變數、本地變數、傳參)
c) 邏輯關係
4、shell的第一句話: #!/bin/bash --- 定義腳本解釋器
/etc/shells – 查看當前系統支持的shell程式
echo $SHELL – 查看當前會話的shell程式
/etc/passwd – 制定了用戶預設支持的shell程式(/sbin/nologin)
5、shell的執行:
a) bash命令來執行腳本:
-n 查看shell腳本的邏輯錯誤(註意單詞的錯誤檢查不出來)
-x 逐行顯示執行的腳本程式(方便排錯)
b) 授權: chmod u+x filename.sh 使用全路徑執行腳本即可
三、變數:一段被命名的記憶體空間
1、環境變數---關於命令歷史的變數:PATH是環境變數的一種
---環境變數查看:env
---查看更詳細的環境變數:set
2、局部變數 declare命令 ---定義變數類型
3、本地變數 local 在函數中使用
4、變數類型:
a) 數值型:
整型 int
浮點型 float
布爾型 boolean
b) 字元串:
普通字元及字元串
數組
5、編程語言的分類:
強類型語言: --- 數值必須被定義變數類型,才能進行處理或運算
弱類型語言: --- 編程語言可以自動識別變數類型
【*多態*】一種數值具有多個屬性,而最後使用的屬性取決於和他進行運算的數據
6、傳參:
$? :代表上一條命令的執行狀態 0表示正確 1~255表示錯誤
$1、$2 … ${10}:執行腳本命令後面傳入腳本的數據,以空格為分隔符
$# :統計傳參數量 ${$#}
$* :表示所有的傳參,以字元串的形式進行輸出
$@ :表示所有的傳參,將所有的傳參以列表的形式進行輸出
7、定義變數的格式:
NAME=VALUE
通過declare定義變數類型
declare -i a=10 定義變數a為整型,value為10
declare -a b 定義數組
8、變數命名:
a) 下劃線的方式指定變數名稱
b) 使用駝峰命名方式
四、test文件測試、條件判斷
在腳本中,我們需要進行語句分支;就是做判斷;
判斷就是使用test命令來實現
1、使用格式:
a) test [option] file
b) [條件語句]
2、常見的test選項:
a) 數值比較選項:
-eq 等於
-ne 不等於
-gt 大於
-ge 大於等於
-lt 小於
-le 小於等於
b) 判斷選項:
-e 判讀文件是否存在
-f 判斷是否為普通文件
-d 判斷是否為目錄文件
-L 判斷是否為鏈接文件
-r -w -x 判斷是否具有 讀 寫 執行
c) 關聯選項:
-o 或
-a 與
! 非
d) 字元串判斷:
= 判斷兩邊的字元串是否相等
!= 不等於
-n 判斷字元串是否存在,存在為真,不存在為假
-z 和-n相反 存在為假,不存在為真
五、邏輯運算
與 && 兩邊的命令,都為真,結果才是真
或 || 兩邊的命令,一邊為真,就是真,同時為假,才是假
非 !=
這個邏輯運算符,前後對接的都是單獨存在的命令;
例子: [ $? -eq 0] && exit 0 || exit 1
六、算術運算
1、let 1+1 let a=1+1 echo $a 2、expr 1*1 expr 1 * 10 3、$[$1+10] a=$[2+3] echo $a 4、$(($1/$2)) a=$((3/2)) echo $a