shell指令碼 函式

2021-10-03 17:32:21 字數 2489 閱讀 6173

函式是乙個指令碼**塊,由使用者對其自定義,可以在指令碼的任意位置建立,按照格式將命令寫入到函式中,系統不會直接執行函式中的命令。

如果想要這個函式,只要呼叫這個函式的名稱(只需要輸入名稱)就可以了,而且可以在指令碼的任意位置呼叫,使用函式的好處在於模組化以及**可讀性強。

function 函式名稱() #()可以省略

或者函式名稱() #()不能省略

function可以省略,函式名稱必須要有,()裡面為空,{}中間就是我們執行的命令。

但要注意,函式名稱在指令碼中必須唯一,若實在是有兩個重名,則會以最後乙個為準,這就導致有乙個函式沒有執行。所以說,這種函式名稱相同的錯誤,不要讓其發生。

[root@linus ~]

# cat 1.sh

#!/bin/bash

ta1(

)function ta1

ta1[root@linus ~]

# sh 1.sh

world

直接寫好函式,然後輸入名稱直接呼叫,這種方式是最基本的函式使用方法,不再演示。

可以在乙個函式中呼叫另乙個已經存在的函式

[root@linus ~]

# cat 3.sh

#!/bin/bash

ta3(

)ta4(

)ta4

[root@linus ~]

# sh 3.sh

這是第乙個函式

這是第二個函式

可以把乙個已有的函式,像命令一樣賦值給變數

[root@linus ~]

# cat 5.sh

#!/bin/bash

ta5()a=

`ta5`

echo

"$a"

[root@linus ~]

# sh 5.sh

這是乙個函式

函式無法從指令碼中直接訪問指令碼引數值。如果想在函式中使用這些值,那麼必須在呼叫該函式時手動傳遞這些資料。

[root@linus ~]

# sh 111 222

sh: 111: 沒有那個檔案或目錄

[root@linus ~]

# cat 6.sh

#!/bin/bash

ta6(

)ta7=

`ta6 $1 $2`

echo

$ta7

[root@linus ~]

# sh 6.sh 111 222

24642

函式可以呼叫已有的變數,函式執行後,函式中的變數也可在指令碼中使用

[root@linus ~]

# cat 8.sh

#!/bin/bash

num=1

ta9(

)ta9

echo

$num2

[root@linus ~]

# sh 8.sh

23

其實最常用的還是直接使用和將函式賦值給變數這兩種,其他型別也有用到,建議都知道,畢竟多多益善嘛

使用return即可退出函式

格式:return 返回值

可以使用$?檢視退出值,和exit一樣,如果不加,執行結束後就會退出函式。

return是專門用來退出函式的命令,與其對應的是專門用來退出指令碼的命令exit。反著使用,不僅會報錯,還會讓指令碼執行不完全。例如:

[root@linus ~]

# cat 7.sh

#!/bin/bash

echo

"這是第乙個顯示"

return 1 #這行產生報錯

echo

"這是第二個顯示"

ta8(

)ta8

echo

"這是第五個顯示"

[root@linus ~]

# sh 7.sh

這是第乙個顯示

7.sh: 第 3 行:return: 只能從函式或者源指令碼`返回'

這是第二個顯示

這是第三個顯示

說其是專門,那麼自然有其在各自使用的環境中的作用。先說說exit,我們一般使用exit時,基本上需求都是直接退出指令碼,而換成return,又不能直接退出指令碼,而且還會報錯。而在函式中使用return,只是結束函式中的命令,如果使用exit,則會把指令碼全部退出。

以下為正常使用:

[root@linus ~]

# cat 9.sh

#!/bin/bash

ta10(

)ta10

echo

"指令碼要退出咯"

exit 1

echo

"指令碼沒退出成功嗎?"

[root@linus ~]

# sh 9.sh

函式要退出咯

指令碼要退出咯

SHELL指令碼函式

shll作為指令碼語言,也有自己的函式。但是他有許多與其他語言不同的特點 在這裡,定義了乙個函式,有2個引數,第乙個 陣列,第二個 單個值。這個函式的作用是判斷第二個引數的值是否在第乙個引數 陣列 裡面。bin sh 定義函式 fun function contain do ta array ech...

shell指令碼 函式

函式function是由若干條shell命令組成的語句塊,實現 重用和模組化程式設計。它與shell程式形式上是相似的,不同的是它不是乙個單獨的程序,不能獨立執行,而是shell 程式的一部分。函式和shell程式比較相似,區別在於 shell 程式在子shell中執行 而shell函式在當前she...

Shell指令碼語法 函式

bin sh foo echo start fooecho end 注意函式體的左花括號寫在同一行,命令末尾必須有 號。在定義foo 函式時並不執行函式體中的命令,就像定義變數一樣,只是給foo這個名字乙個定義,到後面呼叫foo函式的時候 注意shell中的函式呼叫不寫括號 才執行函式體中的命令。s...