shell指令碼學習

2021-10-07 20:21:37 字數 3587 閱讀 8766

三、引數傳遞

四、運算子

五、執行相關

六、輸出命令

七、流程控制

八、函式

九、退出指令碼

單行注釋:#多行注釋::<

(一)變數型別:

區域性變數:在指令碼或命令中定義,僅在當前shell例項中有效,其他shell啟動的程式不能訪問區域性變數。

環境變數:所有的程式,包括shell啟動的程式,都能訪問環境變數,有些程式需要環境變數來保證其正常執行。必要的時候shell指令碼也可以定義環境變數。

shell變數:shell變數是由shell程式設定的特殊變數。shell變數中有一部分是環境變數,有一部分是區域性變數,這些變數保證了shell的正常執行。

(二)變數的常用操作:

建立變數:name="name1"(注意:等號兩邊不可有空格)

建立函式體內區域性變數:local name="name2"(注意:使用local修飾的變數在函式體外無法訪問,並且local只能在函式體內使用)

使變數唯讀:name="only_read_name" -> readonly name(注意:變數唯讀後,不可再修改)

刪除變數:unset name(注意:變數刪除後不可訪問,唯讀變數不可刪除)

(三)字串變數的操作:

單引號:var='name'(變數無效,不可出現轉義符)

雙引號:var="my name is $"(變數有效,可出現轉義符)

字串拼接:

name="this is"" my name";

name="this is my name";

name="this" is "my name";等效,

name='this is'' my nam';

name='this is my name';

name='this' is 'my name';等效

獲取字串長度:$

提取子串:

(四)陣列的操作:

取值:$獲取陣列元素個數:$或者$獲取陣列某一元素長度:$獲取執行的檔名:$0獲取傳入的第n(n>0)個元素:$n獲取傳入引數個數:$#以乙個單字串顯示所有向指令碼傳遞的引數:$*$@$*相同,但是使用時加引號,並在引號中返回每個引數。)

獲取當前執行指令碼的程序號:$$獲取後台執行的最後乙個程序id$!獲取最後命令的退出狀態(0表示無錯誤,其他任何值表明有錯誤):$?(一)算數運算子:

四則運算:\+ 、-、*、\(注意:乘號前必須加\進行轉義才可以進行乘法運算)

示例:

(二)數字關係運算子:

-eq:檢測兩個數是否相等,相等返回 true。

-ne: 檢測兩個數是否不相等,不相等返回 true。

-gt: 檢測左邊的數是否大於右邊的,如果是,則返回 true。

-lt: 檢測左邊的數是否小於右邊的,如果是,則返回 true。

-ge: 檢測左邊的數是否大於等於右邊的,如果是,則返回 true。

-le: 檢測左邊的數是否小於等於右邊的,如果是,則返回 true。

(三)字串運算子:

=:檢測兩個字串是否相等,相等返回 true。

!=:檢測兩個字串是否相等,不相等返回 true。

-z:檢測字串長度是否為0,為0返回 true。

-n:檢測字串長度是否為0,不為0返回 true。

$:檢測字串是否為空,不為空返回 true。

(四)布林運算子:

!:非運算,表示式為 true 則返回 false,否則返回 true。

-o:或運算,有乙個表示式為 true 則返回 true。

-a:與運算,兩個表示式都為 true 才返回 true。

(五)邏輯運算子:

&&:邏輯的and||:邏輯的or

(六)檔案運算子:

b file:檢測檔案是否是塊裝置檔案,如果是,則返回 true。

-c file:檢測檔案是否是字元裝置檔案,如果是,則返回 true。

-d file:檢測檔案是否是目錄,如果是,則返回 true。

-f file:檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則返回 true。

-g file:檢測檔案是否設定了sgid位,如果是,則返回 true。

-k file:檢測檔案是否設定了粘著位(sticky bit),如果是,則返回 true。

-p file:檢測檔案是否是有名管道,如果是,則返回 true。

-u file:檢測檔案是否設定了suid位,如果是,則返回 true。

-r file:檢測檔案是否可讀,如果是,則返回 true。

-w file:檢測檔案是否可寫,如果是,則返回 true。

-x file:檢測檔案是否可執行,如果是,則返回 true。

-s file:檢測檔案是否為空(檔案大小是否大於0),不為空返回 true。

-e file:檢測檔案(包括目錄)是否存在,如果是,則返回 true。

(一)算數運算:

$[ ]: 加減乘除,不必新增空格

$(( )):加減乘除等,不必新增空格

(二)邏輯判斷:

和 (())分別是[ ]的針對數學比較表示式和字串表示式的加強版。

echoprintf:類似c語言

exit:在絕大多數shell指令碼中,exit 0表示執行成功,exit 1表示發生錯誤。

shell 指令碼學習

case var in pattern statement esac case 的指令碼語法是雙分號結尾的。sed e s i.86 i386 查詢替換。sed 流編輯器 將輸入流中的i.86替換成i386。是個萬用字元。輸入流的形式可能是 管道,檔案。shell d mkdir p 指令碼的條件執...

shell指令碼學習

shell 學習 1.shell 解釋型語言,有很多種直譯器。預設是 bin bash。shell指令碼第一行要寫 bin bash 2.shell指令碼執行的方法 1 sh sh 2 chmod a x sh sh 注意,一定要寫成.sh,而不是 sh。執行其它二進位制的程式也一樣,直接寫 sh,...

shell指令碼學習

反引號 反引號是命令替換,命令替換是指shell可以先執行中的命令,將輸出結果暫時儲存,在適當的地方輸出。語法 command 反引號是tab鍵的上乙個按鍵 重定向 如果檔案不存在,將建立新的檔案,並將資料送至此檔案 如果檔案存在,則將資料新增在檔案後面 如果檔案不存在,同上,如果檔案存在,先將檔案...