shell程式設計基礎

2021-09-20 19:54:23 字數 2504 閱讀 4044

在了解shell程式設計基礎前先看一下bash中的邏輯運算

bash的特性之多命令執行

command;command1...順序執行結構

選擇執行結構:

邏輯運算:

與:邏輯乘法,&&(相當於物理電路中的串聯)

0:成功執行-->true

1~255失敗-->false

t&&t-->t

t&&f-->f

f&&f-->f

f&&t-->f

「與」短路邏輯運算:只要第乙個運算元為false,則其邏輯運算的結果一定為false,如果command1能夠執行成功,則command2會被執行,如果command1執行失敗,則command2不會被執行

或:邏輯加法 ||(相當於物理電路中的併聯)

只有兩個全是false時,才會false

t||t-->t

t||f-->t

f||t-->t

f||f-->f

「或」的短路邏輯運算:只要第乙個運算元為true,則其邏輯運算的結果一定為true

command1||command2

只要command1執行成功了,command2就沒有執行的必要了,只有當command1執行失敗,command2才會被執行

非:邏輯取反 單目運算子 !

!true=!false

!false=!true

邏輯程式設計的優先順序:!>&&>||

德摩根定律:!(a&&b)=!a||!b

!(a||b)=!a&&!b

異或:雙目運算子

比對兩個運算元是否不同,如果不同,則邏輯運算結果為真,如果相同,則邏輯運算結果為假

接下來說一下shell指令碼程式設計。你需要知道的一點是程式=指令+資料

程式設計:簡單說就是編寫程式源**

為了能夠讓使用者在使用計算機的時候,可以讓計算機以非互動式的方式完成某些任務,需要將這些任務編織成為乙個檔案,讓計算機順序讀取,從而實現功能

而程式設計的語言又分為高階語言和低階語言

高階語言根據源**的處理方式分為

編譯執行語言:源**-->編譯器(編譯處理)-->彙編器(完成彙編操作)-->[鏈結器(庫的鏈結)]-->彙編成可以直接執行的二進位制檔案

解釋執行語言:源**-->直接啟動跟源**對應的直譯器程式,由直譯器邊解釋邊執行

根據其程式設計過程中的功能的實現是呼叫庫還是呼叫外部程式檔案

完整程式語言:利用庫或程式設計元件進行程式設計

指令碼程式語言:直譯器

shell指令碼:呼叫shell程式,其次呼叫需要的外部命令檔案,命令直譯器,

提供了單一的功能程式設計介面,過程式程式設計邏輯的支援

根據程式的編寫規範又分為

過程式程式語言

以指令(演算法)為中心,圍繞著指令(演算法)的實現設計資料和資料結構,資料為指令服務的

演算法和指令的實現形式

順序執行

選擇執行

迴圈執行

物件式程式語言:

以資料為中心,將資料例項化為類,圍繞著資料的需求來部署指令(演算法)

類、屬性、方法

低階語言: 程式語言

而shell指令碼程式設計屬於過程式程式語言,解釋執行的語言,依賴於外部程式檔案執行

shell指令碼:

1.純文字文件—檔案中所儲存的資料都是以字元為單位進行儲存的

2.根據使用者需求來解決使用者問題的大量命令的組合體

3.很多命令不具備「執行冪等性」,在shell指令碼中就需要使用大量的程式邏輯來判斷某個命令是否滿足執行條件,以避免在執行過程**現嚴重錯誤

這裡解釋一下執行冪等性:任何命令多次執行的結果是一致的

寫shell指令碼,對內容也有一定的書寫規範

shell指令碼中的**內容

1.首行必須是shebang(直譯器路徑),shebang必須佔據絕對行首;在執行時啟動相應的直譯器已解釋指令碼內諸多的命令;

#!/bin/bash

#!/bin/sh

#!/usr/bin/python

#!/usr/bin/per

2.在shell指令碼中,除了shebang之外,以#佔據絕對行首的內容均為注釋行,直譯器會忽略這樣的行的內容

3.解釋會忽略指令碼中所有的空白行

4.大量的命令和關鍵字(if,else,then,do,while,)

注意:shell指令碼一旦執行,是在當前的shell中根據shebang的指示,開啟乙個直譯器(子shell)解釋執行**內容,shell指令碼的內容是在以個子shell程序中實現的

編寫shell的指令碼有很多,我們可以使用nano、vi、vim、emacs等來進行編寫,推薦使用vim,約定下的指令碼檔名的字尾為.sh,也可以不加

指令碼的執行方法:

1.為指令碼檔案賦予執行許可權,直接執行此檔案;

chmod +x /path/to/scripi_file

如果在執行指令碼的時候,只寫指令碼檔名不給出路徑的話,必須保證path變數中儲存的路徑下能夠找到該指令碼檔案

2.直接使用直譯器執行指令碼,將指令碼作為直譯器命令的引數

bash /path/to/scripi_file

Shell 程式設計基礎

2 shell 程式設計基礎 shell 簡介認識後台程式 bash 程式設計熟悉 linux 系統下的編輯環境 熟悉linux 下的各種 shell 熟練進行 shell 程式設計熟悉 vi基本操作 熟悉emacs 的基本操作 比較不同 shell 的區別編寫乙個測試伺服器是否連通的 shell ...

shell程式設計基礎

1.熟悉shell 1.1 基本語法 bin bash shell必須以上面所示的開頭,以 開頭的語句表示注釋。1.2 新增可執行許可權 chmod u x 檔名 1.3 建立簡單的shell bin bash echo n hell user,today is date echo good luc...

shell 程式設計基礎

1.基礎正規表示式 aa 表示至少包含乙個a的行,a 匹配所有內容 匹配任意乙個字元,精準匹配 grep 提取文字中的字元 grep v root 取反不包括root的行 2.cut 命令 f第幾列 d分隔符 3.printf ni輸出n個整數 ns n個字元 m.nf m.nprintf s t ...