Bash的特性之多命令執行:算法
~]# COMMAND1 $(COMMAND2)shell
~]# COMMAND1 | COMMAND2 ... 進程之間的通訊(IPC)編程
順序執行結構:vim
~]# COMMAND1 ; COMMAND2; ... bash
選擇執行結構:數據結構
邏輯運算:編程語言
與:邏輯乘法,&&ide
0:SUCCESS --> ture工具
1~255: FAILUER --> falsespa
T && T =T
F && T =F
若是COMMAND1執行成功,COMMAND2纔會執行;
若是COMMAND1執行失敗,COMMAND2不會執行;
與運算的短路邏輯運算:只要第一個操做數爲F,其邏輯運算結果必定是F;
或:邏輯加法,||
只要兩個所有都爲F時,其運算結果才爲F,
T || T :T
T || F :T
F || F: F
「或」運算的短路邏輯:只要第一個操做數爲T,則其運算結果必定爲T;
只要COMMAND1可以成功執行,COMMAND2就沒必要執行了
只要當COMMAND1執行失敗時,COMMAND2纔會被執行;
非:邏輯取反, !,
!STRING:讀取命令歷史空間的內容;
! Ture = false
! False =ture
! COMMAND
! COMMAND1 && COMMAND2 至關於 COMMAND1 || COMMAND2
邏輯運算符號也有優先級:
! > && > ||
德摩根定律:
!(A && B) == ! A || ! B
!(A || B) == ! A && ! B
異或:雙目運算符
比對兩個操做數是否相同,若是不一樣則邏輯運算爲真,若是相同則邏輯運算爲假;
Shell腳本編程:
什麼叫編程?
編寫程序源代碼。
爲了可以讓用戶再使用計算機的時候,可讓計算機以非交互的方式完成某些任務,須要將這些任務編製成爲一個文件,讓計算機順序讀取,從而實現功能;
編程語言:離硬件越近,處理效率越高就是低級語言
高級語言:
根據源代碼的處理方式:
編譯運行語言:
源代碼 --> 編譯器(編譯) -->彙編器(彙編)--> [連接器(庫的連接)] -->
可直接執行的二進制語言;
解釋運行語言:
源代碼 --> 直接啓動跟源代碼對應的解釋器程序,由解釋器邊解釋邊執行;
根據其編程過程當中的功能的實現是調用庫仍是調用外部程序文件;
完整編程語言:
利用庫或編程組進行編程;
腳本編程語言:
解釋器
Shell腳本:調用shell程序,其次調用須要的外部命令文件;命令解釋器,
提供了單一功能的編程接口:過程式編程邏輯的支持;
根據程序的編寫範式:程序 = 指令 + 數據 程序=算法 + 數據結構
過程式編程語言:
以指令(算法)爲中心,圍繞指令(算法)的實現設計數據和數據結構,數據爲指令服務的;
算法或指令的實現形式:
順序執行:
選擇執行:
循環執行:
對象式編程語言:
以數據爲中心,將數據實例化爲類,圍繞着數據的需求來部署指令(算法)
類,屬性,
低級語言:
彙編語言
Shell腳本編程:
過程式編程語言,解釋運行的語言,依賴於外部程序文件運行的語言;
Shell腳本究竟是什麼?
純文本文檔—文件中存儲的數據都是以字符爲單位存儲的:
根據用戶的需求來解決用戶問題的大量命令的組合體:
不少命令不具有執行冪等性「—任何命令屢次執行的結構是一致的:
不少命令都不具有,在shell腳本中就須要使用大量的程序邏輯來判斷某個命令是否知足其運行條件,以免在運行過程當中出現嚴重錯誤;
Shell腳本中的代碼內容:
1.首行必須是shebang,解釋器路徑,必須佔據絕對行首:在執行時,啓動相應的解釋器以解釋腳本內諸多的命令;
#!/bin/bash
#!/bin/sh ...
2.在shell腳本中,處了shebang以外,以#佔據絕對行首的內容,均爲解釋行,解釋器會忽略這樣行的內容;
3.解釋器會忽略腳本內全部的空白行;
4.大量的命令和關鍵字(if,else,thenn,do,while,for,...),
注意:shell腳本一旦運行,是在當前的shell中根據shebang的指示,開啓一個解釋器(子shell),解釋執行代碼內容,shell腳本的內容是在一個子shell進程中實現的;
咱們能夠利用文本編輯工具來編寫shell腳本:
推薦使用vim
約定下,腳本文件的文件名的後綴爲.Sh,也能夠不加;
腳本的運行方法:
1.爲腳本文件賦予執行權限,直接運行此文件;
Chmod + /PATH/TO/SCCRIPT_FILE
~]# /PATH/TO/SCCRIPT_FILE
若是在執行腳本時,只寫腳本文件名,不給出路徑的話,必須確保PATH變量中保存的路徑下能找到該腳本文件;
2.直接使用解釋器運行腳本,將腳本做爲解釋器命令的參數;
Bash /PATH/TO/SCCRIPT_FILE