Shell程式設計規範與變數

2021-10-25 11:03:32 字數 3595 閱讀 2560

shell指令碼的概念:

將要執行的命令按順序儲存到乙個文字檔案

給該檔案可執行許可權

可結合各自shell控制語句以完成更複雜的操作

shell指令碼應用場景

重複性操作

互動性任務

批量事務處理

指令碼執行狀態監測

定時任務執行

簡單來說,將平時使用的各種linux命令按順序儲存到乙個文字檔案,新增可執行許可權,從而完成更複雜的操作,

就是shell指令碼。

shell的作用:命令直譯器,「翻譯官」

介於系統核心與使用者之間,負責解釋命令列

使用者的登入shell

預設使用的shell程式,一般為/bin/bash

編寫指令碼**:

使用vim文字編輯器(vim能檢查語法結構,編寫是否存在問題)

每一條linux命令,按執行順序編寫

賦予可執行許可權:使指令碼具有可執行屬性

chmod +x [檔名]

執行方法

實驗案例

更完善的指令碼構成包括

指令碼宣告 #!/bin/bash

注釋資訊 # 注釋資訊

可執行語句

標準輸入(stdin):預設的裝置是鍵盤,檔案編號為0,命令將從標準輸入檔案中讀取在執行過程需要的輸入資料。

標準輸出(stdout):預設的裝置是顯示器,檔案編號為1,命令將執行後的輸出結果傳送到標準輸出檔案。

標準錯誤(stderr):預設裝置是顯示器,檔案編號為2,命令將執行期間的各種錯誤資訊傳送到標準錯誤檔案。

標準輸入、標準輸出和標準錯誤預設使用鍵盤和顯示器作為關聯的裝置,與作業系統進行互動,完成最基本的輸入、輸出操作,

即從鍵盤接收使用者輸入的各種命令字串、輔助控制資訊,並將命令結果輸出到螢幕上;如果命令執行出錯,也會將錯誤資訊反饋到螢幕上。

在實際的linux系統維護中,可以改變輸入、輸出內容的方向,而不適用預設的標準輸入、輸出裝置(鍵盤和顯示器),這種操作稱為重定向。

型別裝置檔案

檔案描述編號

預設裝置

標準輸入

/dev/stdin0鍵盤

標準輸出

/dec/stdout

1顯示器

標準錯誤輸出

/devstderr

2顯示器

重定向操作

型別操作符

用途重定向輸入

<

從指定的檔案讀取資料,而不是從鍵盤輸入

重定向輸出

>

將輸出結果儲存到指定的檔案(覆蓋原有內容)

>>

將輸出結果追加到指定的檔案尾部

標準錯誤輸出

2>

將錯誤資訊儲存到指定的檔案(覆蓋原有內容)

2>>

將錯誤資訊追加到指定的檔案中

混合輸出

&>

將標準輸出、標準錯誤的內容儲存到同乙個檔案中

重定向輸入例子:

vi pass.txt

useradd lisi

passwd --stdin lisi < pass.txt #更改使用者lisi的密碼

管道操作符號 「|」

將左側的命令輸出結果,作為右側命令的處理物件。

shell變數的作用、型別變數的作用

●用來存放系統和使用者需要使用的特定引數(值)

變數名:使用固定的名稱,由系統預設或使用者定義變數值:能夠根據使用者設定、系統環境的變化而變化變數的型別

●自定義變數:由使用者自己定義、修改和使用

●特殊變數:環境變數,唯讀變數,位置變數,預定義變數

當變數名稱後面緊跟其他字元相混淆時,需新增「」將其括起來。

echo $2.5

變數賦值的特殊操作:

定義乙個新的變數

●變數名以字母或下劃線開頭,區分大小寫,建議全大寫

變數名=變數值

檢視變數的值

echo$變數名

[root@localhost ~]# product=python

[root@localhost ~]# version=2.7.13

[root@localhost ~]# echo $product

python

[root@localhost ~]# echo $product $version

python 2.7.13

設定變數的作用範圍

預設情況下,新定義的變數只在當前的shell環境中有效,因此成為區域性變數。當進入子程式或新的子shell環境時,

區域性變數將無法再使用。為了使使用者定義的變數在所有子shell環境中能夠繼續,可以通過export將指定變數匯出為全域性變數。

數值變數的計算

expr 變數1 運算子 變數2 [運算子 變數3] …

關於巢狀exp的語法:

t=expr $( expr $x + $y ) \ $x

特殊的shell變數

1.環境變數

由系統提前建立,用來設定使用者的工作環境

配置檔案:/etc/profile 、~/.bash_profile

常見的環境變數:

pwd、path

user、shell、home

2、唯讀變數

shell變數中一種特殊情況,一經設定,其值是不可改變的,這種變數被稱為唯讀變數。

注:唯讀變數的改變是不可逆的,一經唯讀,無法挽回。

3、位置變數(也稱為位置引數,使用$1,$2,$3…$9表示)

當執行命令列操作時,第乙個字段表示命令名或指令碼程式名,其餘的字串引數安裝從左

到右的書序依次賦值給位置變數。

4、預定義變數

$#:表示命令行中位置引數的個數

$*:表示所有位置引數的內容

$?:表示前一條命令執行後的返回狀態,為0即正確,任何非0即出現異常

$0:表示當前執行的指令碼或程式的名稱

Shell程式設計規範與變數

shell的作用 編寫第乙個shell指令碼 重定向與管道操作 shell變數的作用 型別 自定義變數 特殊的shell變數 shell指令碼就是將要執行的命令按順序儲存到乙個文字檔案,並給該檔案可執行許可權,方便一次性執行的乙個程式檔案。主要是方便管理員進行設定或管理,可結合各種shell控制語句...

Shell程式設計規範與變數

shell指令碼的概念 將執行的命令按順序儲存到乙個文字檔案 給該檔案可執行許可權 可結合各種shell空值語句已完成更複雜的操作 shell指令碼應用場景 重複性操作 互動性任務 批量事務處理 服務執行狀態監控 定時任務執行 什麼是 shell指令碼 呢?簡單的說,只要將平時使用的各種linux命...

Shell程式設計規範與變數

四 重定向與管道操作 五 read使用語法 六 shell變數的作用,型別 七 shell變數賦值 八 linux中的運算 九 特殊的shell變數 什麼是shell指令碼?簡單來說,只要將平時使用的各種linux命令按順序儲存到乙個文字檔案中,然後新增可執行許可權,這個檔案就成了乙個shell指令...