標籤:linux 程式設計語言 shell
bash的特性之多命令執行:
$()
管道:進程間的通訊(IPC)
順序執行結構:
分號
選擇執行結構:(邏輯運算)
與:邏輯乘法,&&
0:success-->true
1-255:failure-->false
true&&true = true
true&&false = false “與”短路邏輯運算:
只要第一個運算元為false,則其邏輯運算的結果一定為false,如果command1能夠成功執行,則command2會被執行,如果command1不能成功執行,則command2不會被執行
或:邏輯加法,||兩條管道
只有兩個結果都為false
ture || false = ture
只要第一個運算元為true,則結果一定為true
如果command1成功執行,command2就沒有必要執行
與和或都是雙目運算子
非:邏輯取反,!:單目運算子
!string:讀取曆史命令空間的內容
! command:
! true = false
! command1 $$ command2 相當於 command1 || command2
邏輯運算子號優先順序:!> $$ > ||
德摩根定律:
異或:比對兩個運算元是否不同,如果不同,組邏輯運算結果為真,如果相同,則邏輯運算結果為假
shell指令碼編程:
什麼是編程:編寫程式原始碼
為了能夠讓使用者在使用電腦的時候,可以讓電腦以費互動方式完成某些任務,需要將這些任務編製成為一個檔案,讓電腦順序擷取,從而完成任務
程式設計語言:
進階語言:
根據原始碼的處理方式:
編譯運行語言:
原始碼--編譯器(編譯)--彙編器(彙編)--【連結器(庫的連結)】--可以直接執行的二進位檔案
解釋運行語言:
原始碼--直接啟動跟原始碼對應的解譯器程式,由解譯器邊編譯邊執行
根據其彙編過程中的功能的實現是調用哭還是調用外部程式檔案分為:
完整程式設計語言:利用庫或編程組件進行編程
指令碼程式設計語言:解譯器:
shell指令碼:調用shell程式,其次調用需要的外部命令檔案:命令直譯器
提供了單一功能的編程介面:過程式編輯邏輯的支援
根據程式的編寫範式:程式=指令+資料
過程式程式設計語言:
以指令為中心,圍繞指令(演算法)的實現設計資料和資料結構,資料為指令服務的
對象式程式設計語言:
以資料為中心,將資料執行個體化為類,圍繞著資料的需求來部署指令
shell指令碼編程
過程式程式設計語言,解釋運行,以來與外部程式檔案運行
shell指令碼是什嗎?
純文字文檔
根據使用者的需求解決使用者問題的大量命令的組合體
執行等冪性(任何命令執行的結果是一樣的)
很多命令不具備“執行等冪性”,在shell指令碼中就需要使用大量的程式邏輯來判斷某個命令是否滿足其運行條件,以避免在運行過程中出現嚴重錯誤
shell指令碼中的代碼內容:
1、首行必須是shebang,解譯器路徑,必須佔據絕對行首;在執行時,啟動相應的解譯器以解釋指令碼內諸多的命令:
#!/bin/bash
2、在shell中,除了shebang之外,以#佔據絕對首行的內容,均為注釋行;解譯器會忽略這樣的航的內容
3、解釋會忽略指令碼中所有的空白行
4、大量的命令和關鍵字(if,else,then,do,while,for ...)
注意:shell指令碼一旦運行,是在當前的shell中根據shebang的指示、開啟一個解譯器(子shell)
解釋的行代碼內容,shell指令碼的內容是在一個子shell進程中實現的
我們可以利用編輯來編寫shell指令碼
nano,vi,vim,emacs,pico,推薦使用vim
約定下,指令檔名的尾碼為.sh,也可以不加
指令碼的運行方法:
1、為指令檔賦予執行許可權,直接運行此檔案
chmod +x /PATH/TO/SCRIPT_FILE
如果在執行指令碼時,唯寫指令檔名不寫檔案路徑的話,必須確保PATH變數中儲存的路徑下能夠找到此檔案
2、直搜尋接使用解譯器運行指令碼,將指令碼作為解譯器命令的參數
低級語言:
組合語言
程式設計語言和shell編程基礎