1. 程式人生 > >shell 腳本編程

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 腳本編程