linux學習第二節 SHELL指令碼語法

2021-07-03 11:42:19 字數 2712 閱讀 7998

1.shell指令碼的建立過程

shell指令碼就是放在乙個檔案中的一系列llinux命令和實用程式。

shell指令碼固定格式如下:

#!/bin/bash

#注釋命令

...#!用來解釋指令碼檔案,#開頭為注釋,如果一行未完,可以在行尾加上「\」字元,表示與下一行合併為一行。

2.shell中的特殊字元

1.萬用字元

萬用字元主要用於模式匹配,例如檔名匹配、字串查詢等。常用如下:

星號(*),匹配0個或多個字元。

問號(?),匹配任意單字元。

方括號(),匹配方括號中限定的任意乙個字元

感嘆號(!),表示方括號列出的字元以外的其他字元。

2.引號

引號分為雙引號、單引號和反引號,除美元符號($)、反引號(』)、和反斜線(\)仍保留其特殊功能外,其餘字元均作為普通字元對待。 

3.輸入輸出重定向符

輸入重定向符「<」的作用是把命令的標準輸入重新定向到指定檔案;輸出重定向符「>」的作用是把命令的標準輸出重新定向到指定檔案。

此外還有輸出附加定向符「>>」,它的作用是將命令的輸出附加到指定檔案的後面,而不破壞檔案原有的內容。

3.shell變數

shell是一種解釋型語言,使用變數時不需要事先進行宣告,對乙個變數賦值,實際上就是定義了這個變數。

例如對str賦值::

str="hello word"    //注意等號兩邊不能有空格。

變數賦值之後,就可以使用美元符號($)對其進行引用如下:::

echo $str

由於shell變數是沒有型別的,所以使用者在使用同乙個變數,可以存放字元,也可以存放整數。 

使用unset命令清楚已經定義的變數。

unset str

為了使shell程式設計更為有效,系統還提供了一些特殊的變數,如下所示。

$0: 指令碼名稱

$#: 命令列引數的個數

$*: 所有的命令列引數

$[1-n]: 第1-n個命令列引數

$$: 當前程序的表示符

$!: 後台執行的最後乙個程序的標示符

$?: 命令的退出狀態,0表示沒有錯誤

4.條件測試

test命令通常用來計算乙個條件表示式的值,在條件語句和迴圈語句中經常被用來判斷是否滿足某些條件。格式如下:

test 條件

或[條件]   /使用方括號時,要注意在條件兩邊加上空格。

1.字串測試

主要操作符如下:

=:兩個字串相等。

!=:兩個字串不等。

-z:字串為空。

-n:字串不為空。

2.數值測試

主要操作符如下:

-eq: 兩個數相等

-ne:兩個數不相等

-gt:第乙個數大於第二個數

-lt:第乙個數小於第二個數

-le:第乙個數小於等於第二個數

-ge:第乙個數大於等於第二個數

3.檔案狀態測試

檔案測試主要用來測試檔案的型別以及訪問許可權等,操作符包括如下:

-f:是否為普通檔案

-d:是否為目錄

-c:是否為字元裝置檔案

-b:是否為塊裝置檔案

-s:檔案大小是否為零

-r:使用者對檔案是否有讀許可權

-w:使用者對檔案是否有寫許可權

-x:使用者對檔案是否有執行許可權

4.邏輯操作

邏輯操作包括如下:

-a: 邏輯與                  

-o: 邏輯或

!:  邏輯非

5.控制結構

1.if語句

if語句用來實現條件分支結構,它的一般格式如下:

if 條件1

then

命令1elif 條件2

then

命令2else

命令3fi             if語句以它的反寫fi結尾

2.case語句

格式如下:

case 字串 in

模式1)

命令1;;

模式2)

命令2;;

...*)

命令n;;

esac                  ///結尾也是反case

3.for迴圈

使用for迴圈,中的變數名來遍歷列表中的所有取值,當變數值在列表中時,即執行一次所有命令。

for迴圈的一般格式如下:

for 變數名 in[列表]

do命令 1

命令 2

...done   

4.while迴圈

while迴圈的一般格式如下:

while 條件

do命令1

命令2。。。

done 

5.until迴圈

一般格式如下:   //與while 區別不成立時執行do語句

until 條件

do命令 1

命令 2

...done

6.break語句

break語句用來跳出迴圈過程,如果用在多層迴圈之中,可以指定跳出的迴圈個數,如果在兩層迴圈中,使用break 2剛好跳出整個迴圈。

7.continue語句

continue語句用來跳過迴圈中後面的語句,直接開始下一次迴圈。 

6.shell函式

與很多高階語言一樣,shell中也允許定義函式

格式如下:

[function] 函式名()

linux第二節SHELL指令碼

1.shell指令碼的建立過程 shell指令碼就是放在乙個檔案中的一系列llinux命令和實用程式。shell指令碼固定格式如下 bin bash 注釋命令 用來解釋指令碼檔案,開頭為注釋,如果一行未完,可以在行尾加上 字元,表示與下一行合併為一行。2.shell中的特殊字元 1.萬用字元 萬用字...

python學習第二節

1.直接執行.py檔案和進入python互動模式有什麼不同 輸入python進入python直譯器相當於輸入一行執行一行,直接執行.py檔案相當於直接輸出最後結果,不看中間是如何執行的 2.python的迴圈有兩種,一種是for in,一次遍歷元素,for x in 迴圈就是把每個元素代入變數x,然...

python學習 第二節

鏈式賦值a b 1 系列解包賦值a,b 1,2 注 系列解包賦值可實現變數值得交換 a,b 1,2 a,b b,a a 2,b 1 常量 python中不存在常量,只是約定常量命名規則 1.整型int int 實現其他型別轉換到int python3整數取值可以是任意範圍 2.浮點型float 用科...