Linux Shell指令碼基礎

2021-04-13 02:01:47 字數 1536 閱讀 4984

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.主程式 在編寫...