1. 程式人生 > 其它 >shell程式設計基礎命令解釋

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 變數,刪除變數或函式