寫在最前,做爲一名軟件測試人員,shell基礎也是必不可少的技能,就筆者遇到的工做場景中,在linux部署測試環境,查看錯誤信息,監控服務器性能都會用到shell語句,此外,無論是dockerfile,或者是自動化腳本都須要用到這塊的技術,這篇文章一方面也是梳理一下比較雜亂的技能點,另外一方面也是留個檔,方面後面持續查看學習。本文主要梳理shell基礎,詳見正文。
1、shell介紹
shell是系統的用戶界面,提供了用戶與內核進行交互操做的一種接口。實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令而且把它們送到linux內核。它是一門弱類型的腳本語言。
2、shell腳本格式
shell腳本是以.sh結尾的文件,其中文件的第一行內容爲#!/bin/bash,第一行的內容指定了shell腳本解釋器的路徑,並且這個指定路徑只能放在文件的第一行。
#!/bin/bash
3、shell變量及參數傳遞
shell變量的名稱定義與其餘變成語言一致,包括:
1. 命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭
2. 中間不能有空格,能夠使用下劃線,不能使用標點符號
3. 不能使用bash裏的關鍵字
這裏要特別注意的是:變量名和等號之間不能有空格,以下:
案例以下:
特殊變量定義:雙引號、單引號、反單引號javascript
"" 雙引號括起來的變量:會將其中的變量轉變爲實際值輸出java
'' 單引號括起來的變量:輸入什麼就是什麼linux
`` 反單引號包含的內容:會做爲shell命令執行,返回結果 docker
樣例以下:shell
輸入操做:read -p "提示信息" 變量名
以文件形式接收參數:
$1--->傳遞第一個參數
$n---->傳遞第n個參數
$0:顯示的是文件名稱
$@:顯示全部的參數
$#:顯示的參數的個數
樣例以下:
腳本內容:
輸出內容:
>覆蓋,>>追加
案例以下:執行 >> 兩遍追加,輸入內容是追加的,若是是執行 > ,則會覆蓋刪除
4、shell邏輯判斷
if分支
if...then...elif...then...else...fi分支,案例以下:
注意:[] 先後都須要有空格
case分支
第一行最後必須爲in,每一個執行語句以;;結束,最後以esac結束,以下:
補充:
邏輯運算符:
-a :且
-o :或
! : 否
比較運算符:
-eq:equal 相等
-ne:not equal 不相等
-ge:greater equal 大於等於
-gt:greater than 大於
-le:less equal 小於等於
-lt:less than 小於
字符串比較:
== 相等
!= 不等
-z 判斷字符串長度是否爲0
-n 判斷字符牀是否爲空
測試文件/目錄狀態 :
-d dir 判斷是否爲目錄
-f file 判斷是否爲文件
-e file 判斷文件或目錄是否存在
-w、-r 、-x 判斷文件是否可寫,可讀、可執行
5、shell循環體
for循環
格式:
for 變量名 in 列表
do
語句
done
案例以下:
其中:命令: seq start size max,能夠生成一個指定起始、結尾、步長的列表bash
while循環
格式:
while [ 條件 ]
do
執行語句
done
案例以下:
定義:函數名(){}
案例以下: