shell指令碼入門篇

2021-07-25 08:09:19 字數 3294 閱讀 9617

1.變數

yourname="zhangsan"

echo

$

不需要型別宣告,賦值時等號中間不能有空格,使用時必須在前面加$,建議盡量將變數名用花括號包裹

readonly yourname
unset yourname

2. 字串

單引號和雙引號的區別:

3. 陣列

array_name=(1

'zhangsan')

echo$#1

echo

$#1 zhangsan

echo$#1

echo

$#2

4. shell注釋

shell只有一種方式注釋,就是使用#,沒有多行注釋,如需注釋**塊,可以使用{}將其包裹成為乙個函式,只要不被呼叫即相當於失效。

5. 變數傳遞

向指令碼傳遞變數時,指令碼內部使用$1$2...去引用傳入的第乙個引數 第二個引數 …

$#

//引數個數

$*//所有引數以空格間開並作為乙個字串整體返回

$@//同$*

$*和$@的區別

只有在雙引號中體現出來。假設在指令碼執行時寫了三個引數 1、2、3,,則\$*等價於 「1 2 3」(傳遞了乙個引數),而$@等價於 「1」 「2」 「3」(傳遞了三個引數)。

6. 算術運算

shell原生不支援簡單的算術運算,但可以使用表示式計算工具expr完成求值。

使用方式:

a=10

b=20

val=`expr $a + $b`

echo val #30

expr表示式放置在反括號裡,運算子前後必須用空格間開,乘法運算子為\*

7. 其它運算子

邏輯運算子

說明$eq

等於$ne

不等於$gt

大於$lt

小於$ge

大於等於

$le小雨等於

布林運算子說明!

非運算子

-o/||

或運算子

-a/&&

與運算子

檔案測試運算子

說明-d

是否為資料夾

-f是否為檔案

-r是否可讀

-w是否可寫

-x是否可執行

-s是否為空

-e是否存在

8. 分支語句

#if分支

if condition

then

command1

command2

...elif condition

then

command1

command2

...else

command1

...fi#case分支

read anum

case $anum in

1) echo '輸入1'

;;2) echo '輸入2'

;;*) echo '輸入其它'

;;esac

分支下沒有任何執行語句不被允許,必須選擇忽略該分支。

例如

a=10

b=20

if [ $a == $b ]

then

echo

'兩數相等'

elif [ $a

-lt$b ]

then

else

echo

'兩數不等'

fi

其中elif分支下沒有執行語句,將報錯。

case分支語句,必須使用in,每個匹配模式新增),匹配執行語句完成新增;;,匹配所有其它使用*,最後使用esac封尾。

通常條件表示式有以下幾種用法:

if [ $a

-lt$b ]

if test $a

-lt$b

第一種之間的任何乙個空格不能少。更多的是採用test命令。

9. 迴圈語句

#輸出 張三 李四

for name in

'張三'

'李四'

doecho

$done

#輸出 1 2 3 4 5

index=1

while(($

<= 5))

doecho

$let

"index++"

done

#接受鍵盤輸入 並輸出

while

read some

doecho

$" is you say"

done

#無限迴圈1

while

true

do command

done

#無限迴圈2

for((;;))

do command

done

#無限迴圈3

until false

do command

done

注:forwhileuntil跟條件語句,需使用(()),支援break跳出全部迴圈,continue跳出當前迴圈。

10. 函式

#不帶參帶返回值

functionname

() functionname

echo $? #10

#帶參functionname

() -ge $

then

return

$else

return$fi

}echo

"-----函式開始執行-----"

functionname $1

$2echo

"-----較大值為---------"

echo $?

Linux入門篇(五) Shell(一)

這一系列的linux入門都是本人在 鳥哥的linux私房菜 的基礎上總結的基本內容,主要是記錄下自己的學習過程,也方便大家簡要的了解 linux distribution是ubuntu而不是書本上推薦的centos,建議裝雙系統,不要使用虛擬機器。在github上 linuxpractice 其他內...

shell指令碼入門 符號篇

shell就是乙個命令列直譯器,它的作用是解釋執行使用者的命令,使用者輸入一條命令,shell就解釋執行一條,這種方式稱為互動式 interactive shell還有一種執行命令的方式稱為批處理 batch 使用者事先寫一 個shell指令碼 script 其中有很多條命令,讓shell一次把這些...

Linux Shell指令碼程式設計入門篇之二

一 什麼是指令碼?提前寫好可執行 用來完成特定任務的檔案,是乙個順序批處理的解釋性程式。常見的指令碼語言如下圖所示 二 指令碼的建立過程 寫出自己的第乙個shell指令碼 案例需求 新建乙個名為mtd的本地使用者。此使用者能夠正常登入,其密碼為654654。2 編寫可執行檔案 指令碼語言 各步驟如何...