三、引數傳遞
四、運算子
五、執行相關
六、輸出命令
七、流程控制
八、函式
九、退出指令碼
單行注釋:#
多行注釋::<
(一)變數型別:
區域性變數:在指令碼或命令中定義,僅在當前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。
(一)算數運算:
$[ ]
: 加減乘除,不必新增空格
$(( ))
:加減乘除等,不必新增空格
(二)邏輯判斷:
和 (())
分別是[ ]的針對數學比較表示式和字串表示式的加強版。
echo
printf
:類似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鍵的上乙個按鍵 重定向 如果檔案不存在,將建立新的檔案,並將資料送至此檔案 如果檔案存在,則將資料新增在檔案後面 如果檔案不存在,同上,如果檔案存在,先將檔案...