shell 腳本編程
bash: 弱類型語言
變量類型:
環境變量 , 本地變量(局部變量) , 位置變量 , 特殊變量
1. 本地變量 : 只在當前進程中有效,父子 shell 不通用
聲明方法 : Name = value
引用方法 : $( Name ) 括號可以省略
局部變量 : 作用域為當前代碼段
聲明方法 : local Name = value
2. 環境變量 : 作用域為當前 shell 進程及其子進程
聲明方法 : Name= value
引用方法 : export Name (用戶定義變量時,都為本地變量,export 可以將本地變量變成環境變量,從而使子進程可以引用)
3. 特殊變量 :
$? : 上一個命令執行狀態的返回值
註: 程序執行後有兩種返回值,一種是程序執行的結果,一種是程序狀態的返回代碼(0-255).
0 : 正確執行
1-255 : 錯誤執行
1,2,127 : 系統預留
撤銷變量: unset Name
查看環境變量 : env , printenv , export
腳本:
命令的堆砌,按照實際需要,結合命令流程機制,實現的源程序.Linux內核只能執行ELF格式的文件,但是我們寫的腳本是命令的堆砌,腳本格式屬於二進制 ASCII 所以在腳本文件的第一行,我們需要告訴內核,需要調用一個腳本解釋器,才能正常執行腳本.
魔數: ( shebang ) #!/bin/bash
腳本中常見的三種測試:
1.條件測試
2.字符測試
3.文件測試
1.條件測試: 根據命令的返回值來判斷命令執行是否成功,再結合邏輯符號來完成條件判斷
1)條件測試的表達式:
[ expression ] : [ ] 與表達式之間必須有擴號
[[ expression ]] : [[ ]] 與表達式之間必須有擴號
test expression
2.整數測試:
-eq : equal
-ne : not equal
-gt : great then
-lt : less then
-ge: great equal
-le : less equal
3.邏輯關系:
與 : &&
或 : ||
非 : !
4)單分支的 if 語句
if 判斷條件; then
statement1
statement2
...
fi
5)多分支
if 判斷條件; then
statement1
statement2
...
elseif statement
fi
6)算術運算
Ⅰ let 算數表達式 例: let c=$a+$b
Ⅱ $[算術表達式] 例: c= $[$a+$b]
Ⅲ $((算術表達式)) 例: c= $(($a+$b))
Ⅳ expr 算數表達式 註意,表達式中各操作數及運算符之間要有空格,而且要使用命令引用 反引號
例: c = ` expr $a + $b `
3.文件測試
-e File : exist 文件是否存在 [ -e File ] 註意: [ ] 同樣需要有空格
-f File : file 是否為普通文件
-d File : directory 是否是目錄文件
-r File : read 測試當前用戶對指定文件是否有讀權限
-w File: write
-x File: 執行
定義腳本退出狀態碼: exit 如果沒有定義退出狀態碼,則最後一條命令的退出碼,即為腳本的退出狀態碼
測試腳本是否有語法錯誤:
bash -n file
bash -x file 單步執行
位置變量 : 當腳本需要接受外部的參數時使用,$1 為第一個參數 $2 為第二個參數 ......
在執行腳本時,將變量跟在腳本後,以空格隔開.
特殊變量:
$? :
$# :參數列表
$@ : 參數列表
shift : 輪替,當參數太多是,我們可以用shift來踢出一個或多個參數, shift | shift 2
shell 腳本編程