本週的第二次課講的是腳本編寫初步,要想編寫好腳本,按照老師的意思那就必須得對於之前學過的基本命令爛熟於心,所有還必須得把之前的博客補上,纔會對於腳本編寫打下良好的基礎,那今天我們就來說說一說何爲腳本。
在介紹腳本之前我們先了解一個概念,bash特性之多命令執行
我們在之前有學過怎樣把幾個命令連接在一起執行,以上就是常見的兩種$()和管道,但這兩者都不是很方便,其中管道更是要求前一個命令必須有輸出,所有我們運用了邏輯運算的概念去執行多個命令。
~]# COMMAND1 $(COMMAND2)
~]# COMMAND1 | COMMAND2... 進程之間的通信(IPC)
順序執行結構:
~]# COMMAND1 ; COMMAND2 ; ...
選擇執行結構:
下面介紹幾種最簡單的邏輯運算,因爲我們專業之前學過,所以理解起來比較容易,大家有沒學過的還是得仔細思考一陣
邏輯運算:
與:邏輯乘法,&&,雙目運算符
0:SUCCESS --> true
1-255:FAILURE --> false
true && true = true
true && false = false
false && true = false
false && false = false
“與”的短路邏輯運算:只要第一個操作數爲false,則其邏輯運算的結果一定爲false
COMMAND1 && COMMAND2
如果COMMAND1能夠成功執行,則COMMAND2會被執行
如果COMMAND1執行失敗,則COMMAND2不會被執行
或:邏輯加法,||,雙目運算符
true || true = true
true || false = true
false || true = true
false || false = false
“或”的短路邏輯運算:只要第一個操作數爲true,則其邏輯運算的結果一定爲true
COMMAND1 || COMMAND2
只要COMMAND1能夠成功執行,COMMAND2就沒有必要執行了
只有當COMMAND1執行失敗的時候,COMMAND2纔會被執行
非:邏輯取反,!,單目運算符
!STRING:讀取命令歷
! true = false
! false = true
! COMMAND
! COMMAND1 && COMMAND2相當於 COMMAND1 || COMMAND2
! COMMAND1 || COMMAND2相當於 COMMAND1 && COMMAND2
德摩根定律:
!(A && B)== !A || !B
!(A || B)== !A && !B
邏輯運算符優先級:
!>&&>||
異或:雙目運算符
比對兩個操作數是否不同,如果不同,則邏輯運算結果爲真,如果相同,則邏輯運算結果爲假
以上是關於邏輯運算最基本的概念,大家努力記住並理解他就好。
下面正式說一下什麼是shell腳本編程
shell腳本編程:
什麼叫編程?
編寫程序源代碼
爲了能夠讓用戶使用計算機的時候,可以讓計算機以非交互的方式完成某些任務,我們需要將這些任務編製成爲一個文件,讓計算機順序讀取,從而實現功能。
在我看來這是一種節省人力的方式,如果我們一條條指令去敲得話,會浪費大量的時間精力,如果我們事先將其編成連續的代碼,讓計算機順序去執行,就會大大節省我們的時間。
編程語言:
高級語言:
根據源代碼的處理方式:
編譯運行語言:
源代碼-->編譯器(編譯)-->彙編器(彙編)-->{鏈接器(庫的鏈接)}-->可以直接運行的二進制文件
解釋運行語言:
源代碼-->直接啓用跟源代碼對應的解釋器程序,由解釋器邊解釋邊執行
根據其編程過程中的功能的實現是調用庫還是外部程序文件:
完整編程語言:利用庫或編程組件進行編程
腳本編程語言:解釋器
shell腳本:調用shell程序,其次要調用我們需要的外部命令文件,命令解釋器
提供了單一功能的編程接口:對所謂的過程式編程邏輯的支持
根據程序的編寫範式:程序=指令+數據 程序=算法+數據結構
過程式編程語言:
以指令(算法)爲中心,圍繞指令(算法)的實現設計數據和結構,數據爲指令服務的
算法或指令的實現方式:
順序執行
選擇執行
循環執行
面向對象編程語言:
以數據(數據結構)爲中心,將數據實例化爲類,圍繞着數據的需求部署指令(算法)
類、屬性、方法
低級語言:
彙編語言:
以上是關於編程的一些概念,對於我們理解腳本有很大作用。
shell腳本編程:
過程式編程語言,解釋運行,依賴於外部程序文件運行
shell腳本到底是什麼:
1.純文本文檔-文件中所存儲的數據都是義字符爲單位進行存儲的
2.根據用戶的需求來解決用戶問題的大量命令的組合體
3.“執行冪等性”-任何命令多次執行的結果是一致的
很多命令都不具備“執行冪等性”-任何命令多次執行的結果是一致的
在shell腳本中就需要使用大量的程序邏輯來判斷某個命令是否滿足其運行條件,以避免在運行過程中出現嚴重錯誤
shell腳本的代碼內容:
1.首先必須是shebang,解釋器路徑,必須佔據絕對行首:在執行時,啓動相應的解釋器去解釋腳本內諸多內容
#!/bin/bash
2.在shell腳本中,除了shebang外,以#佔據絕對行首的內容,均爲註釋行,解釋器會自動忽略這樣的行的內容
3.解釋會忽略腳本中所有的空白行
4.大量的命令和關鍵詞(if、else、then、do)
注意:shell腳本一旦運行,是在當前的shell中根據shebang的指示,開啓一個解釋器(子shell)解釋代碼內容,shell腳本的內容是在一個子shell中實現的
我們可以利用文本編輯工具來編寫shell腳本
nano vi vim emacs pico
推薦使用vim
約定下,腳本文件名的後綴爲.sh,也可以不加:
腳本的運行方法:
1.位腳本文件賦予執行權限,直接運行此文件
chmod +x /PATH/TO/SCRIPT_FILE
~]# /PATH/TO/SCRIPT_FILE
如果直接在執行腳本時,只寫腳本文件名不給出路徑的話,必須確保PATH變量中保存的路徑下,能找到該腳本文件
2.直接使用解釋器運行腳本,將腳本作爲解釋器命令的參數
bash /PATH/TO/SCRIPT_FILE
這只是腳本的最基本的知識,關於腳本,我們必須得自己動手去寫,纔會發現自己的問題,其中最基礎最基礎的還是命令的使用,以後有時間一定要把之前的補上,先去寫作業了。。。