一、關于shell
1、什么是shell
什么是shell?
Shell(外殼) 是一個用 C 語言撰寫的程式,它是用戶使用 Linux 的橋梁,Shell 既是一種命令語言,又是一種程式設計語言,
Shell 是指一種應用程式,這個應用程式提供了一個界面,用戶通過這個界面訪問作業系統內核的服務,
什么是腳本?
腳本簡單地說就是一條條的文字命令,這些文字命令是可以看到的(如可以用記事本打開查看、編輯),
常見的腳本: JavaScript(JS,前端),VBScript, ASP,JSP,PHP(后端),SQL(資料庫操作語言),Perl,Shell,python,Ruby,JavaFX,Lua等,
為什么要學習和使用shell?
Shell屬于內置的腳本
程式開發的效率非常高,依賴于功能強大的命令可以迅速地完成開發任務(批處理)
語法簡單,代碼寫起來比較輕松,簡單易學
常見的shell種類?
在linux中有很多型別的shell,不同的shell具備不同的功能,shell還決定了腳本中函式的語法,Linux中默認的shell是/bin/bash(重點),流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特點以及用途,
2、shell入門
撰寫規范:
代碼規范:
#!/bin/bash [指定告知系統當前這個腳本要使用的shell解釋器]
Shell相關指令
檔案命名規范:
檔案名.sh .sh是linux下bash shell 的默認后綴
使用流程:
①創建.sh檔案 touch/vim
②撰寫shell代碼
③執行shell腳本 腳本必須得有執行權限
二、shell進階(重點)
1、變數(重點)
1.1、變數的含義
a. 什么是量:量就是資料.
b. 什么是變數:資料可以發生改變就是變數.
在一個腳本周期內,其值可以發生改變的量就是變數.
c. 什么叫做一個腳本周期
一個腳本周期我們可以簡單的理解為當前的shell檔案,
變數是shell中不可或缺的一部分,也是最基礎、最重要的組成部分,
1.2、變數的定義與使用(重點)
定義形如:class_name="yunwe "
使用形如:echo $class_name
注意:變數名后面的等號左右不能有空格,
變數名的命名須遵循如下規則:
命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭,
中間不能有空格,不能使用標點符號
不能使用bash里的關鍵字(可用help命令查看保留關鍵字),
關于單雙引號的問題:
雙引號能夠識別變數,雙引號能夠實作轉義(類似于“\*”)
單引號是不能識別變數,只會原樣輸出,單引號是不能轉義的
注意:當在腳本中需要執行一些指令并且將執行的結果賦給變數的時候需要使用“反引號”(esc鍵下方的那個鍵),
1.3、只讀變數(了解)
語法:readonly 變數名
案例:定義變數a并且其值為10,隨后設定其為只讀變數,再去嘗試重新賦值
1.4、接收用戶輸入(重點)
語法:read -p 提示資訊 變數名
案例:撰寫一個腳本test6.sh,要求執行之后提示用戶輸入檔案的名稱(路徑),然后自動為用戶創建該檔案


1.5、洗掉變數(了解)
語法:unset 變數名path
案例:定義變數b=20,再輸出b的值,隨后洗掉b,最后再輸出下b


2、條件判斷陳述句
語法1(一個條件):
if condition
then
command1
command2
...
fi
單行寫法(一般在命令列中執行的時候):if [ condition ]; then command; fi
語法2(兩個條件):
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
3、運算子
在shell中,運算子和其他編程腳本語言一樣,常見的有算數運算子、關系運算子、
邏輯運算子、字串運算子、檔案測驗運算子等
3.1、算數運算子
常用的算術運算子:

注意:
條件運算式要放在方括號之間,并且要有空格,例如: [$a==$b] 是錯誤的,必須寫成 [ $a == $b ]
運算式和運算子之間要有空格,例如 2+2 是不對的,必須寫成 2 + 2
完整的運算式要被 ` ` 包含,注意這個字符不是常用的單引號,在 Esc 鍵下邊,
3.2、關系運算子
關系運算子只支持數字,不支持字串,除非字串的值是數字,
下表列出了常用的關系運算子,假定變數 a 為 10,變數 b 為 20:
-eq:equal
-ne:not equal
-gt:great than
-lt:less than
-ge:great than or equal
-le:less than or equal
3.3、邏輯運算子
下表列出了常用的布爾運算子,假定變數 a 為 10,變數 b 為 20:
或運算:一個為真即為真,全部為假才是假
與運算:一個為假即為假,全部為真才是真
3.4、字串運算子
下表列出了常用的字串運算子,假定變數 a 為 "abc",變數 b 為 "efg":

3.5、檔案測驗運算子(重點)
檔案測驗運算子用于檢測 Unix/Linux 檔案的各種屬性,
屬性檢測描述如下:
注意:權限幾個判斷,如果只有一個部分符合,則認為是有權限的,
4、shell腳本附帶選項(重點)
問題描述:在linux shell中如何處理tail -10 access.log這樣的命令列選項?
步驟:
呼叫tail指令
系統把后續選項傳遞給tail
Tail先去打開指定的檔案
取出最后10行
問題:自己寫的shell是否也可以像內置命令一樣傳遞一些選項呢?
答:可以的,傳遞方式與上述的描述是一樣的,關鍵是怎么接收,
例如:
傳遞:
#./test.sh a b c
接收:
在腳本中可以用“$1”來表示a,“$2”來表示b,以此類推,
接收可以用“$”加上選項對應的序號即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/449739.html
標籤:Linux
