自帶工具類
1.什麼是shell?
Shell(外殼) 是一個用 C 語言編寫的程式,它是使用者使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程式設計語言。
Shell 是指一種應用程式,這個應用程式提供了一個介面,使用者通過這個介面訪問作業系統核心的服務。
2、shell入門
建立(XXXX).sh檔案
vim (XXXX).sh編寫shell程式碼
shell進階
變數的定義與使用(重點)
變數,先定義後使用。
定義形如:class_name="yunwe "
使用形如:echo $class_name
使用變數改寫入門指令碼中的第1個shell指令碼。
只讀變數(瞭解)
readonly( 變數名)
定義變數a並且其值為10,隨後設定其為只讀變數,再去嘗試重新賦值
接收使用者輸入(重點)
語法:read -p 提示資訊 變數名
編寫一個指令碼test6.sh,要求執行之後提示使用者輸入檔案的名稱(路徑),然後自動為使用者建立該檔案
刪除變數(瞭解)
語法:unset 變數名path
案例:定義變數b=20,再輸出b的值,隨後刪除b,最後再輸出下b
2、條件判斷語句
語法1(一個條件):
if condition
then
command1
command2
...
fi
單行寫法(一般在命令列中執行的時候):if [ condition ]; then command; fi
語法2(兩個條件):
if condition
then
command1
command2
...
else
command
fi
語法3(多個條件):
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
算數運算子
下表列出了常用的算術運算子,假定變數 a 為 10,變數 b 為 20:
運算子 |
說明 |
舉例 |
+ |
加法 |
`expr $a + $b` 結果為 30。 |
- |
減法 |
`expr $a - $b` 結果為 -10。 |
* |
乘法 |
`expr $a \* $b` 結果為 200。 |
/ |
除法 |
`expr $b / $a` 結果為 2。 |
% |
取餘 |
`expr $b % $a` 結果為 0。 |
= |
賦值 |
a=$b 將把變數 b 的值賦給 a。 |
== |
相等。用於比較兩個數字,相同則返回 true(真)。 |
[ $a == $b ] 返回 false(假)。 |
!= |
不相等。用於比較兩個數字,不相同則返回 true。 |
[ $a != $b ] 返回 true。 |
關係運算符
關係運算符只支援數字,不支援字串,除非字串的值是數字。
下表列出了常用的關係運算符,假定變數 a 為 10,變數 b 為 20:
運算子 |
說明 |
舉例 |
-eq |
檢測兩個數是否相等,相等返回 true。 |
[ $a -eq $b ] 返回 false。 |
-ne |
檢測兩個數是否相等,不相等返回 true。 |
[ $a -ne $b ] 返回 true。 |
-gt |
檢測左邊的數是否大於右邊的,如果是,則返回 true。 |
[ $a -gt $b ] 返回 false。 |
-lt |
檢測左邊的數是否小於右邊的,如果是,則返回 true。 |
[ $a -lt $b ] 返回 true。 |
-ge |
檢測左邊的數是否大於等於右邊的,如果是,則返回 true。 |
[ $a -ge $b ] 返回 false。 |
-le |
檢測左邊的數是否小於等於右邊的,如果是,則返回 true。 |
[ $a -le $b ] 返回 true。 |
邏輯運算子
下表列出了常用的布林運算子,假定變數 a 為 10,變數 b 為 20:
運算子 |
說明 |
舉例 |
! |
非運算,表示式為 true 則返回 false,否則返回 true。 |
[ ! false ] 返回 true。 |
-o |
或(或者)運算,有一個表示式為 true 則返回 true。 |
[ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a |
與(並且)運算,兩個表示式都為 true 才返回 true。 |
[ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
或運算:一個為真即為真,全部為假才是假
與運算:一個為假即為假,全部為真才是真
字串運算子
下表列出了常用的字串運算子,假定變數 a 為 "abc",變數 b 為 "efg":
運算子 |
說明 |
舉例 |
= |
檢測兩個字串是否相等,相等返回 true。 |
[ $a = $b ] 返回 false。 |
!= |
檢測兩個字串是否相等,不相等返回 true。 |
[ $a != $b ] 返回 true。 |
-z |
檢測字串長度是否為0,為0返回 true。 |
[ -z $a ] 返回 false。 |
-n |
檢測字串長度是否為0,不為0返回 true。 |
[ -n $a ] 返回 true。 |
str |
檢測字串是否為空,不為空返回 true。 |
[ $a ] 返回 true。 |
檔案測試運算子(重點)
檔案測試運算子用於檢測 Unix/Linux 檔案的各種屬性。
屬性檢測描述如下:
操作符 |
說明 |
舉例 |
-b file |
檢測檔案是否是塊裝置檔案,如果是,則返回 true。 |
[ -b $file ] 返回 false。 |
-c file |
檢測檔案是否是字元裝置檔案,如果是,則返回 true。 |
[ -c $file ] 返回 false。 |
-d file |
檢測檔案是否是目錄,如果是,則返回 true。 |
[ -d $file ] 返回 false。 |
-f file |
檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則返回 true。 |
[ -f $file ] 返回 true。 |
-g file |
檢測檔案是否設定了 SGID 位,如果是,則返回 true。 |
[ -g $file ] 返回 false。 |
-k file |
檢測檔案是否設定了粘著位(Sticky Bit),如果是,則返回 true。 |
[ -k $file ] 返回 false。 |
-p file |
檢測檔案是否是有名管道,如果是,則返回 true。 |
[ -p $file ] 返回 false。 |
-u file |
檢測檔案是否設定了 SUID 位,如果是,則返回 true。 |
[ -u $file ] 返回 false。 |
-r file |
檢測檔案是否可讀,如果是,則返回 true。 |
[ -r $file ] 返回 true。 |
-w file |
檢測檔案是否可寫,如果是,則返回 true。 |
[ -w $file ] 返回 true。 |
-x file |
檢測檔案是否可執行,如果是,則返回 true。 |
[ -x $file ] 返回 true。 |
-s file |
檢測檔案是否為空(檔案大小是否大於0),不為空返回 true。 |
[ -s $file ] 返回 true。 |
-e file |
檢測檔案(包括目錄)是否存在,如果是,則返回 true。 |
[ -e $file ] 返回 true。 |
shell指令碼附帶選項(重點)
問題描述:在linux shell中如何處理tail -10 access.log這樣的命令列選項?
步驟:
呼叫tail指令
系統把後續選項傳遞給tail
Tail先去開啟指定的檔案
取出最後10行