shell程式設計基礎命令解釋
shell 程式設計
一、shell概括
1.先來簡述一下shell的用途
1.shell可以用來自動化系統的初始化工作(update,軟體的安裝,時區的設定,安全策略...)
2.自動化批量軟體部署程式(LAMP/LNMP/Tmcat/LVS/Nginx)
3.管理應用程式(KVM,叢集管理)
4.日誌分析處理程式(grep/awk)
5.自動化備份恢復程式(mysql完全備份/增量)
6.自動化管理程式(批量遠端修改密碼,軟體升級,配置更新)
7.自動化資訊採集及監控程式(收集系統/應用狀態資訊,CPU,Mem,disk,net,apache,mysql)
2.shell的作用
- 解釋執行使用者輸入的命令
- 輸入一條,shell解釋一條
- 接盤輸入命令,linux就給與響應的方式,稱互動
3.shell概念
shell是一塊包裹著系統核心的殼,處於作業系統的最外層,與使用者之間對話,把使用者輸入的作業系統,然後處理作業系統的輸出結結果,輸出到螢幕給與使用者看到結果
從我們登入linux,所有操作都是交給shell解釋
4.什麼是shell指令碼
當命令或者程式語句寫在檔案中,我們執行檔案,讀取其中的帶程式碼,這個程式檔案就被稱為shell指令碼。
在shell指令碼總定義多條linux以及迴圈控制語句,而linux命令一次性執行完畢,執行指令碼檔案的方式稱為非互動式。
- 在window 中.bat 批處理指令碼
- 在linux 中 .sh 指令碼檔案
shebang
#! /bin/bash #shebang
- 以 #!/bin/sh 開頭的檔案,程式在執行的時候會要呼叫/bin/sh,也就是bash直譯器
- 以#! /usr/bin/python 開頭的檔案,代表指定python直譯器去執行
- 以 #!/usr/bin/env 直譯器名稱,是一種在不同平臺上都能正確找到直譯器的方法
./執行指令碼 需要chmod +x 許可權
sh 檔名
指令碼規範
- 在寫shell指令碼中,#後面寫的是註釋內容,給開發者和使用者看的
- 註釋可以單獨寫一行,也可以跟在命令後面
- 儘量報錯愛寫註釋習慣,便於回顧程式碼含義,儘量使用英文
執行shell指令碼方式
- bash 檔名.sh
- 使用絕對相對路徑 執行指令碼,需要檔案有x執行檔案
- source 檔名.sh 或者 . 檔名.sh
- 少見用法, sh<檔名.sh
shell和運維關係
shell指令碼語言很適合處理純文字型別資料,且linux的哲學思想就是一切皆檔案,如日誌、配置檔案、文字、網頁檔案、大多數都是純文字型別,因此shell可以方便的進行文字處理,例如強大的文字三劍客(grep、sed、awk)
二、走進shell
1.字元型別
shell語言定義的變數,資料型別預設字串型別
型別 | 介紹 |
---|---|
弱型別語言 | 在定義變數的時候,不用主動宣告改型別 |
強型別語言 | 需要指定變數型別,必須對應的上負責報錯 |
centos7支援shell 種類
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/dash
其他指令碼語言
運維必會語言:shell、python
因為大量的linux運維工具由python開發的。
變數的作用域
- 單引號變數,不識別特殊用法
- 雙引號變數,能夠識別特殊用法
注意:1.每次呼叫bash /sh這樣直譯器去執行指令碼, 都會開啟一個子shell,因此不保留當前shell的變數,通過pstree命令檢查程序樹
2.呼叫source或者. 在當前shelll環境載入指令碼,因此保留
在linux反引號`
環境變數
環境變數一般指export,用於定義shell的執行環境,保證shell命令正確執行,shell通過環境變數確定登入使用者莫、PATH路徑、穩健性等能找出linux中各種變數。
- 每個使用者都有自己的環境變數配置檔案,~/.bash_profile ~/.bashhrc ,以個人配置檔案優先載入變數,生效。,
- 當你需要給所有使用者都使用某個變數,
檢查系統環境變數的命令
- set 輸出所有變數,包括全域性變數、區域性變數
- env,只顯示全域性變數
- declare,輸出所有的變數,如同set
- export,顯示和設定環境變數值
撤銷環境變數
- unset 變數,刪除變數或函式