天天看點

[Linux](十七) --shell bash學習----基本文法及練習

寫在開頭

今天就開始寫小腳本啦,但在這之前得了解一些基本的文法,學習每個語言基本都有的for,while ,if swtich啊,無非就是換了種格式。為了能更熟悉,照着鳥哥的私房菜裡的練習都打了一遍。

下面是學習的一些文法

1.變量

之前已經學過變量的設定,範圍了,可以看看

但在寫shell裡有幾個特殊變量,需要注意的:

  • $0,$1,$2… 代表腳本後面接的參數,$0是腳本名稱,$1是腳本後面第一個參數,$2是腳本第二個參數,以此類推。

  • $#:指腳本後面你輸出參數的個數。

  • [email protected]:就是把你輸入的參數都輸出出來。

可以看看這個例子:

代碼:

[Linux](十七) --shell bash學習----基本文法及練習

結果:

[Linux](十七) --shell bash學習----基本文法及練習

2.判斷符号[],和判斷語句if…else…fi

使用判斷符号需要遵循一些規則:

  • 變量最好要加上雙引号。
  • 每個元件之間都要有空格。(一開始老是犯錯)

  • 常量最好要加上單引号。

那怎麼使用呢,下面我列舉了一些比較容易記的。

  • 關于檔案類型的判斷的

-e(exist) ,-f(file),-d(directory),-L(Linkfile).

分别是,檔案名是否存在,檔案是否存在,目錄是否存在,連接配接檔案是否存在。

  • 關于檔案權限的判斷

-r(read讀),-w(write寫),-x(excute執行)。

分别是,是否具有讀權限,是否具有寫的權限,是否具有執行的權限。

  • 兩個檔案的比較

-nt (newer than),-ot(older than),ef(equal file)

分别是,第一個檔案是否别第二個檔案新,第一個檔案是否比第二個檔案舊,兩個檔案是否為同一個檔案。

  • 關于兩個整數之間的大小比較

-eq (equal),-ne(not equal),gt(greater than),lt(less than),-ge(greater than or equal),-le(less than or equal)

分别是,等于,不等,大于,小于,大于等于,小于等于。

  • 關于字元串的判斷

-z (zero):字元串是否為空,空的話,傳回True

-n:與-z相反

str1 = str2: str1是否等于str2,等于傳回True

str1 != str2:str1是否不等于str2,等于傳回False

  • 類似于 或,且,非的條件判斷

-a (all,就是且),兩個條件同時成立才是真。

-o (or,或),其實一個條件為真,就是真。

!(非):就是非…

例子:

代碼:

[Linux](十七) --shell bash學習----基本文法及練習

結果:

[Linux](十七) --shell bash學習----基本文法及練習

判斷語句

應該學過一些變成基礎都很容易學會,背好格式就好了。

格式:

if [條件]; then

一些内容

fi

來練習個書上的例子就好了。

代碼:

[Linux](十七) --shell bash學習----基本文法及練習

結果:

[Linux](十七) --shell bash學習----基本文法及練習

上面的代碼用了兩個if語句,現在換成if …elif …esle 試試。

代碼:

[Linux](十七) --shell bash學習----基本文法及練習
現在隻要一個if語句就能完成啦。

3.case…esac 類似switch

格式:

就是什麼在什麼裡面,然後執行一段代碼。

case $變量名稱 in

“變量内容”)

程式内容

;;

“變量内容”)

程式内容

;;

*)

程式内容

;;

esac

例子:

代碼:

[Linux](十七) --shell bash學習----基本文法及練習

結果:

[Linux](十七) --shell bash學習----基本文法及練習

4. 循環:for while… do…done, until… do… done

while格式:

while [條件]

do

程式内容…

done

例子:計算機1+2+3+…+100的值
[Linux](十七) --shell bash學習----基本文法及練習

結果:

[Linux](十七) --shell bash學習----基本文法及練習
  • 注意的地方,以前說過的,=号兩邊不能留白白。
  • 中括号裡面每個元件都要分開。

until格式:

until [條件]

do

程式内容…

done

#####例子:改了下上面的例子,改成until格式。

[Linux](十七) --shell bash學習----基本文法及練習
發現條件反了過來,結果還是5050。類似于java的do while。

for格式:

for ((初始的值;終止的值;每次增加的值))

do

程式内容…

done

例子:
[Linux](十七) --shell bash學習----基本文法及練習

5.function,功能函數

function格式:

function 名稱 () {

程式内容…

}

例子,定義一個函數,輸入一個名字,輸出hello+名字。

代碼:

[Linux](十七) --shell bash學習----基本文法及練習

結果:

[Linux](十七) --shell bash學習----基本文法及練習

繼續閱讀