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指令...