shell腳本 (script): 是一種Linux操作命令 , 用戶運行腳本時就會自動執行文件中的命令
shell大致可分爲兩類 :
1. 入門級腳本 : 腳本文件中僅包含一些操作命令 , 無任何邏輯判斷語句 , 這種腳本只會按照從上到下的順序來執行命令 , 如果某行命令錯誤會自動跳過 , 去執行下一條命令
2. 高級腳本 : 在入門級腳本的基礎上在加入條件判斷 if , 循環(for , while , until)等邏輯控制語句 , 讓腳本更具有通用性和可移植性
編寫shell腳本的思路:
1. 根據目標需求分析需要用到哪些操作命令
2. 將操作的命令寫入到shell腳本文件中 , 不考慮邏輯判斷
3. 運行和測試入門級腳本
4. 對入門級腳本進行優化 , 即添加條件判斷if, 循環等邏輯控制語句
5. 運行和測試入門級腳本優化後的高級腳本
test條件判斷:
功能 : 用來判斷文件 , 權限 , 值(數值是否相等 , 是否爲空) .
幫助手冊 : 在Linux系統中可通過 man test 來查看
格式:
test 條件 語句
例1 : 判斷字符長度是否爲零
test -z $x (-z 意爲 -zero , 表示$x的字符長度爲零時 , 判斷則爲正確)
例2 : 如圖命令行所示;
(echo $? 顯示的是上一條命令的執行狀態碼 , 0 表示正確 , 1 表示錯誤 )
先判斷變量y字符長度是否爲0 , echo $? 顯示狀態碼爲0 , 表示判斷結果爲正確 ; 再賦給y一個值 , 顯然test -z $y 判斷結果爲錯誤 ,所以echo $? 輸出的狀態碼爲 1
test 判斷語句功能選項介紹
一 . 判斷字符長度是否爲零 :
test -z $y (上述例子以解釋)
test -n $y -n (no zero) : 判斷當前變量y字符長度不爲0時 , 結果爲正確
二 . 判斷字符串內容是否相等 :
test a=b 判斷 a 和 b 值是否相等 , 相等則爲正確
test a != b 判斷 a 和 b 值是否相等 , 不相等則爲正確 , ! 表示取反
例 : 判斷內容相不相等:
三 . 判斷整數值的大小 :
格式: test 值1 [選項] 值2
選項有: -eq 相等
-ne 不想等
-gt 大於
-lt 小於
-ge 大於等於
-lt 小於等於
例 : 判斷 5 和 4 值的大小:
四 . 判斷文件類型:
格式 : [ -d /etc ] 判斷/etc 是否爲目錄 , /etc 爲目錄則爲真 ( [ ] 兩頭一定要空格)
Linux系統文件類型分爲 : 普通文件 , 文件目錄 , 塊設備 , 字符設備 , 軟鏈接文件 , 套接字 , 管道文件
上述文件類型對應的選項爲: -f -d -b -c -L -S -p
例 :判斷 /etc 是否爲目錄
例2: 判斷/etc/a.txt 文件是否存在 , 存在則顯示"a.txt exists" ,否則就創建/etc/a.txt
[ -f /etc/a.txt ] && echo "a.txt exists" || touch /etc/a.txt
五 . 判斷當前文件是否爲可讀(read) , 可寫{write} , 可執行(exec) 權限:
格式 : [ -r 文件名 ] [ -w 文件名 ] [ -x 文件名 ]
例 : 創建文件a.txt , 判斷a.txt 權限是否爲能可執行
六 . 邏輯的 與 或 非
格式: [ ! abc = abcd ]
[ adc = abc -a 123 =123 ] 條件全部爲真時則爲真
[ abc = abcd -o 123 =123 ] 有一個爲真時則爲真