shell指令碼學習

2021-06-22 13:53:02 字數 1901 閱讀 6187

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命令檢視保留關鍵...