Shell:體驗編程的低成本選擇(上篇)

Shell,一種腳本語言,是主流操作系統(tǒng)出廠便支持的,即 Windows 系統(tǒng)、MacOS 系統(tǒng)和 Linux 的各個發(fā)行版,都支持運行 Shell 語句和腳本。Shell 之于運維工程師,就好比斧頭之于樵夫,是不可或缺的生產(chǎn)工具。然而,Shell 的魅力卻不僅僅是如此。對想體驗編程的人士來說,Shell 由于開機可用、免安裝要比 C/C++、Java 和 Python,具有更低的體驗成本。同時,Shell 的語法內(nèi)容和關鍵字都比它們少很多,這意味著學習難度更低。因此,對于只是抱著嘗試心態(tài)想要體驗編程的人來說,Shell 真的是最佳首選。

Shell 腳本,和其他代碼腳本一樣,需要借助命令窗口才能解析和執(zhí)行。在 Windows 中,具有解析和執(zhí)行 Shell 腳本的命令窗口,是 Powershell;而在 MacOS 和 Linux 中,任意一個命令終端窗口都支持解析和執(zhí)行 Shell 腳本,不過,保險起見,你可以用 Shell 命令中的 echo 命令,去確認所打開的命令窗口是否支持解析和執(zhí)行 Shell,具體如下:


用 echo 命令檢測是否支持 Shell

只要回車之后,命令窗口沒有提示“echo 不是可執(zhí)行的命令”等錯誤相關的信息,那么,你所打開的命令窗口,就是支持解析和執(zhí)行 Shell。

麻雀雖小,但五臟俱全,Shell 除了不支持結構體和類外,在變量和數(shù)組的聲明、流程控制、函數(shù)聲明和參數(shù)傳遞、輸入輸出等方面都是支持的,并且也支持條件判斷、大小比較等運算,而加減乘除賦值等運算符也是支持。總而言之,除了不支持自定義數(shù)據(jù)結構,Shell 在很多操作上都和 C/C++、Java 和 Python 等編程語言,是相互一致的。

1、變量和數(shù)組的聲明

1.1、變量

Shell 語法中,并沒有數(shù)據(jù)類型的概念,因而在 Shell 腳本中聲明變量時,并不需要顯式地指定數(shù)據(jù)類型,由此,我們可以將 Shell 歸入弱類型編程語言陣營中。Shell 聲明變量的語法格式如下:


聲明變量

Shell 腳本中聲明變量時,和 Python 類似,等號左邊為變量名、右邊為變量值,需要注意的是,變量名和等號之間不允許有空格,此外,合法的變量名應當遵循如下規(guī)則:

Shell 的變量名命名規(guī)則

而執(zhí)行 Shell 腳本也非常簡單,只需在支持解析和執(zhí)行 Shell 腳本的命令窗口中,前往Shell 腳本所在的目錄,而后將待執(zhí)行的 Shell 腳本設置成可執(zhí)行模式,然后再用 ./[shell].sh 命令去執(zhí)行即可,如下:

在終端窗口執(zhí)行 Shell 腳本

1.2、數(shù)組聲明

數(shù)組的聲明和變量的聲明比較類似,只不過變量值從單個的值,換成了由圓括號擴起來的一系列值,如下:

聲明數(shù)組

上面是 Shell 腳本中最基本數(shù)組聲明語法,除了表示符號和分隔符的差異外,作為動態(tài)類型語言的 Shell,和 Python 很多方面都很相似。而 Shell 獲取數(shù)組的所有元素,無需通過遍歷,使用 @ 或 * 可以獲取數(shù)組中的所有元素,而基于這兩個符號再加上! 或 # 還能輕松的獲取數(shù)組的鍵名和長度,如下:

2、運算符

Shell 所支持的運算符有算術運算符、關系運算符、布爾運算符、字符串運算符和文件測試運算符。

2.1、算術運算符

在 Shell 腳本中使用算術運算符的語法如下:

算術運算

Shell 的算術運算符要在算術運算表達式中使用,而算術運算表達式由反引號擴起來、并以關鍵詞 expr 開頭。

2.2、其他運算符

除算術運算外,其他幾種運算的結果都是 true 或 false,因此,放到流程控制中去列舉。

3、流程控制

Shell 腳本的流程結構,也是分為順序結構、選擇結構和循環(huán)結構,同樣是順序結構作為 Shell 腳本的默認流程結構。Shell 的選擇結構也是 if-else 和 case 兩種,而循環(huán)結構除了常見的 for 循環(huán)和 while 循環(huán)外,還多了一個 until 循環(huán)。

3.1、選擇結構

3.1.1、if 語句

Shell 的 if 語句的語法格式,如下:

if語句

與其他編程語言所不同的是,Shell 的 if 語句,需要用 fi 作為語句塊的結束標志。

3.1.2、case 語句

Shell 的 case 語句如下:

case 語句

如上所示,case 語句其實就是 switch-case 結構。

3.2、循環(huán)結構

3.2.1、循環(huán)語句

Shell 中的循環(huán)語句如下:

循環(huán)語句

3.2.2、循環(huán)控制

Shell 也同樣提供了 break 和 continue 兩個關鍵字進行循環(huán)控制,用法如下:

帶控制的循環(huán)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容