本文旨在複習Shell基本概念、編程模型、變量類型、腳本規範、語言結構、腳本執行方式
shell
Linux層次結構和Shell基本概念
express
Linux層次結構大體分爲這麼幾層編程
● 請注意:基本上各層次都屏蔽了底層差別性,既能管理調用底層,同時又爲上一層[或多層]服務安全
● Hardware Platform:硬件層有各類各樣不一樣廠家的各類硬件接口,對上層提供服務bash
● OS Kernel:內核層,屏蔽底層硬件差別,提供核心功能,調度資源運行指令程序,上層能夠進行System Call編程語言
● LIB 庫文件:Kernel中的服務訪問點,爲了安全性、便利性等封裝成庫文件,上層能夠進行庫調用ide
● 什麼是Shell:是用戶和Linux溝通的橋樑,分爲CLI Shell[bash、zsh、tsh]等,GUI Shell[Gnome、KDE等]函數
Shell編程模型
高級語言編程模型主要有面向過程、面向對象,通俗來講
● 面向過程:分析解決問題的步驟,把代碼封裝成函數一一實現這些步驟,使用的時候一一調用
● 面向對象:把構成問題的事物分解成各個對象,創建對象的目的不是爲了完成一個個步驟,而是爲了描述事物在解決整個問題的過程當中所發生的行爲。
例子:一個下棋的過程,說明面向過程和麪向對象。
● 請注意:整體來講,Shell編程是面向過程的,分解實現,調用後完成自動化。但新概念提出了Shell面向對象編程
Shell變量類型
Shell中變量大體有5類
● 環境變量:做用範圍當前shell進程及其子shell進程
● 本地變量:做用範圍僅當前shell進程
● 局部變量:當前shell進程中某個局部代碼片斷,一般是函數上下文
● 位置變量:參考grep後向引用,引用腳本參數,$1 $2 $3
● 特殊變量:shell程序設置的特殊變量。一部分是環境變量,有一部分是局部變量,保證了shell的正常運行。
Shell腳本規範
任何一門編程語言,都會遵循必定的編程規範,好比C語言的include等,shell也有本身的編程規範
例子:以一個shell腳本例子來講明規範
1 |
#!/bin/bash #Author:By Lance,2015-09-21 13:37:03 statement1 fi .... source |
注意點:
<1>開頭必須指定shebang[魔術],即代表該文件的格式,一般保存爲*.sh
<2>註釋信息:一般做者、時間、做用、描述等,但不侷限於此,不建議中文註釋
<3>內容部分:可填充各類命令、語言結構、條件判斷、分支等等,實現邏輯增強
<4>代碼縮進,易讀,尤爲是成對出現的經過縮進相同長度,更加直觀可讀
<5>成對符號、流程控制建議一次寫完,避免遺漏,先總體後細節
Shell語言結構
同大多數高級語言,有3種語言結構,可組合使用
● 順序結構 --> 默認法則,逐條執行語句
● 選擇結構 --> 分支,進行條件判斷,符合條件的分支予以執行;不符合的略過
● 循環結構 --> 將同一段代碼反覆執行有限次,直到知足跳出條件,不然是死循環
Shell腳本執行方式
一般腳本執行方式有3種
● ./test.sh執行,前提條件進程發起者對該文件有x權限,本質是經過調用一個新shell進程來運行,注意變量改變
● bash test.sh執行,本質上是調用bash命令,將test.sh做爲該命令的參數來執行,該shell腳本能夠無需x權限
● source test.sh 或 . test.sh[.後有空格] 將shell腳本導入當前shell進程來執行,注意變量也會導入當前shell進程