shell腳本程式設計基礎
-
變量的定義:
直接定義 str=hello //等号兩端不能有空格
雙引号定義 str=“hello”//保留特殊字元的含義
單引号定義 str = ‘hello’ //去除特殊字元的含義
-
變量的引用
小飄号定義str=
date
或則 str=$(date)
echo hello >1.txt 輸出重定向(覆寫原内容)
echo world >>1.txt 輸出重定向(不覆寫原内容,追加)
-
特殊變量
$0 指令本身
$1 2.... 2 .... 2....n //取指令行參數
[email protected]//取所有的參數
$? //判斷上一條指令是否執行成功,成功列印0 失敗列印非0
$#//傳遞參數的個數
顯示目前的程序号
-
環境變量
env //顯示所有環境變量
HOSTNAME:目前主機名
SHELL:shell類型
QTDIR:qt安裝路徑
USER:目前使用者
PATH:指定目前指令尋找路徑
export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH(設定動态庫路徑,這樣就不用将動态庫複制到usr/lib裡了 LD_LIBRARY_PATH: 動态庫的查找路徑)
-
輸入輸出:read num//輸入num
echo指令printf//輸出
-
計算表達式的四種方法
var= $ ((1+2))
var=$ 4[1+2]
let var=1+2
var=$(expr 1 + 2)
-
test 條件表達式
test 表達式1 = 表達式2 等号兩邊須有空格
test string1 = string2
[條件表達式] [ string1 = string2 ]
條件表達式值為真傳回0,為假傳回非0
echo $? 非0為假,0為真
-
判斷整數
-gt:大于
-ge:大于等于
-eq:等于
-le:小于等于
-lt:小于
-ne:不等于
-a:兩個條件都有滿足 and
-o:滿足一個條件即可 or
-
字元串比較
[[ -z str ]] //長度為0 傳回0
[[ str1 == str2 ]]//判斷是否相等
[[ str1 != str2 ]]
- 檔案條件測試
- if then else
- case語句
- for語句
- while語句
- until語句
- break continue
- 數組&函數
-
數組
定義 1: a=(1 2 3 4 5)下标從 0 開始 各個資料之間用空格隔開
定義 2: a[0]=1;a[1]=2;a[2]=3
定義 3: a=([1]=1 [2]=2)
引用
取值: ${a[0]}
${a[@]} //取數組中所有的值
${#a[@]} //取數組的長度
${a[@]:2} //截取下标為2以後的所有元素
${a[@]:2:2} //截取下标為2以後的2個元素
-
函數
調用的時候直接寫函數名即可
無傳回值 無參數 僅僅用來封裝代碼
function_name()
{}