shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。
任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為#,直譯器對此行不予解釋。
指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以#!/bin/sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。
指令碼從上到下執行,執行指令碼前需要增加其執行許可權。確保正確建立指令碼路徑,這樣只用檔名就可以執行它。
條件測試
寫指令碼時,有時要判斷字串是否相等,可能還要檢查檔案狀態或是數字測試。
test命令用於測試字串,檔案狀態和數字
expr命令測試和執行數值輸出
使用最後退出狀態命令$?可測知test和expr,二者均以0表示正確,1表示返回錯誤
檔案狀態測試
-d 目錄
-s 檔案長度大於0、非空
-f 正規檔案
-w 可寫
-l 符號鏈結
-u 檔案有suid位設定
-r 可讀
-x 可執行
檔案測試時使用邏輯操作符
-a 邏輯與
-o 邏輯或
! 邏輯否
字串測試
= 兩個字串相等
!= 兩個字串不等
-z 空串
-n 非空串
測試數值
-eq 數值相等
-ne !=
-gt >
-lt <=
-le <=
-ge >=
expr
使用乘號時,必須用反斜線遮蔽其特定含義。
模式匹配
expr也有模式匹配功能。可以使用expr通過指定冒號選項計算字串中字元數。
「.*」意即任何字元重複0次或多次。
if、the、else語句提供條件測試。測試可以基於各種條件。
case語句允許匹配模式、單詞或值。
一旦模式或值匹配
for迴圈
每次處理依次列表內資訊,直至迴圈耗盡
until until迴圈直至條件為真。
while迴圈
while迴圈當條件為真時,迴圈執行,條件部分在迴圈頭
流控制語句的任何迴圈均可巢狀使用
檔案拷貝輸出檢查
當前目錄測試
當執行一些管理指令碼時,可能要在根目錄下執行它,特別是移動某種全域性檔案或進行許可權改變時。乙個簡單的測試可以獲知是否執行在根目錄下。
Linux shell指令碼基礎
ls 列出目錄下的清單 cat 連線顯示檔案內容 less more 分頁顯示檔案內容,建議使用less,相比於more更方便 head 顯示檔案頭部,可指定行數,預設顯示10行 tail 顯示檔案尾部,可指定行數,預設顯示10行 file 顯示檔案型別 wc 檢視檔案或統計資訊 find 查詢檔案...
linux shell指令碼基礎 3
6.函式 function name 注意 必須在呼叫乙個函式之前先對它進行定義,不存在前向宣告 當乙個函式被呼叫時,指令碼程式的位置引數 1,2等 會被替換為函式的引數。這也是讀取傳遞給函式的引數的辦法。當函式執行完畢後,這些引數會恢復為它們先前的值。可以通過return命令讓函式返回數字值 注意...
Linux shell指令碼程式設計基礎
把指令碼路徑寫入 path變數。帶上路徑執行,需要執行許可權。bash bash後跟上指令碼,該方法指令碼不需要執行許可權也能執行。bash 讀入指令碼內容,通過管道符交給bash執行。當前主機遠端呼叫其他主機的指令碼。1.宣告shell型別 bin bash 2.變數 3.函式 4.主程式 在編寫...