shell 學習
1.shell 解釋型語言,有很多種直譯器。預設是/bin/bash。
shell指令碼第一行要寫:
#!/bin/bash
2.shell指令碼執行的方法
1)sh **.sh
2)chmod a+x **.sh
./**.sh
注意,一定要寫成./**.sh,而不是**.sh。
執行其它二進位制的程式也一樣,直接寫**.sh,linux系統會去path裡尋找有沒有叫**.sh的,而只有/bin,/sbin, /usr/bin,/usr/sbin等在path裡,你的當前目錄通常不在path裡,所以寫成**.sh是會找不到命令的,要用./**.sh告訴系統說,就在當前目錄找。
3)sh命令去執行乙個shell指令碼的時候是可以加-x選項來檢視這個指令碼執行過程的,這樣有利於我們除錯這個指令碼**出了問題。
sh –x **.sh
3.1)#是注釋
2);作為命令的分隔符
3)單引號、雙引號、反引號
當變數內容帶有特殊字元(如空格)時,需要加上單引號
變數內容中本身帶有單引號或者引用其他變數的內容,需要用到雙引號了
變數內容中需要用到其他命令執行結果則可以使用反引號,在esc下面。
學習shell指令碼之前的基礎知識
4.定義變數& 使用變數
1)variablename="value",變數名和等號之間不能有空格,注意variablename的值都是string,要是值沒有空格什麼的,就可以什麼不加;否則,用單引號或者雙引號
2)使用乙個定義過的變數,只要在變數名前面加美元符號($)即可
變數名外面的花括號是可選的,加不加都行,加花括號是為了幫助直譯器識別變數的邊界
5.定義陣列
在shell中,用括號來表示陣列,陣列元素用「空格」符號分割開。定義陣列的一般形式為:
陣列名=(值1 值2 ... 值n)
讀取陣列元素值的一般格式是:
$#使用@符號可以獲取陣列中的所有元素
echo $
# 取得陣列元素的個數
length=$
6. test 命令用於檢查某個條件是否成立,它可以進行數值、字元和檔案三個方面的測試。
shell test命令
數值測試
引數說明
-eq等於則為真
-ne不等於則為真
-gt大於則為真
-ge大於等於則為真
-lt小於則為真
-le小於等於則為真
字串測試
引數說明
等於則為真
不相等則為真
-z 字串
字串長度偽則為真
-n 字串
字串長度不偽則為真
檔案測試
引數說明
-e 檔名
如果檔案存在則為真
-r 檔名
如果檔案存在且可讀則為真
-w 檔名
如果檔案存在且可寫則為真
-x 檔名
如果檔案存在且可執行則為真
-s 檔名
如果檔案存在且至少有乙個字元則為真
-d 檔名
如果檔案存在且為目錄則為真
-f 檔名
如果檔案存在且為普通檔案則為真
-c 檔名
如果檔案存在且為字元型特殊檔案則為真
-b 檔名
如果檔案存在且為塊特殊檔案則為真
uid用來檢查是不是超級使用者(uid=0)還是普通使用者
7.ifelse
8.case
9.for
10.date "+%y%m%d %h:%m:%s"
20140626 02:02:55
shell 指令碼學習
case var in pattern statement esac case 的指令碼語法是雙分號結尾的。sed e s i.86 i386 查詢替換。sed 流編輯器 將輸入流中的i.86替換成i386。是個萬用字元。輸入流的形式可能是 管道,檔案。shell d mkdir p 指令碼的條件執...
shell指令碼學習
反引號 反引號是命令替換,命令替換是指shell可以先執行中的命令,將輸出結果暫時儲存,在適當的地方輸出。語法 command 反引號是tab鍵的上乙個按鍵 重定向 如果檔案不存在,將建立新的檔案,並將資料送至此檔案 如果檔案存在,則將資料新增在檔案後面 如果檔案不存在,同上,如果檔案存在,先將檔案...
Shell指令碼學習
定義變數時,變數名不加美元符號如 name com 注意,變數名和等號之間不能有空格,這可能和你熟悉的所有程式語言都不一樣。同時,變數名的命名須遵循如下規則 首個字元必須為字母 a z,a z 中間不能有空格,可以使用下劃線 不能使用標點符號。不能使用bash裡的關鍵字 可用help命令檢視保留關鍵...