函數允許您對分解成更小的,邏輯子部分,然後可以被要求執行各項任務時,它需要一個指令碼的整體功能。
使用函數來執行重複性的任務,是一個很好的方式來建立代碼的重用。代碼重用是現代物件導向編程的原則的重要組成部分。
Shell函數是類似於其他程式設計語言中的子程式,過程和函數。 建立函數:
聲明一個函數,只需使用以下文法:
function_name () {
list of commands
}
函數名 function_name,這就是你將使用它從其他地方在你的指令碼調用。函數名必須遵循括弧內,後括弧內的命令的列表。 例如:
以下是使用函數簡單的例子:
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World"
}
# Invoke your function
Hello
當你想執行上面的指令碼,它會產生以下結果:
$./test.sh
Hello World
$
參數傳遞給函數:
你可以定義一個函數,它接受參數,而調用這些函數。將這些參數代表$1,$2,依此類推。
以下是一個例子,我們傳遞兩個參數Zara和Ali ,然後我們捕獲和列印這些參數函數。
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
}
# Invoke your function
Hello Zara Ali
這將產生以下結果:
$./test.sh
Hello World Zara Ali
$
從函數的傳回值:
如果你執行一個exit命令從一個函數內部,其效果不僅是終止執行的功能,而且Shell 程式中調用該函數。
如果你不是想,只是終止執行該函數,再有就是退出來的一個定義的函數。
根據實際情況,你可以從你的函數返回任何值,使用返回的命令,其文法如下:
return code
這裡的代碼可以是任何你選擇這裡,但很明顯,你應該選擇你的指令碼作為一個整體的背景下是有意義的或有用的東西。 例子:
下面的函數返回一個值1:
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
return 10
}
# Invoke your function
Hello Zara Ali
# Capture value returnd by last command
ret=$?
echo "Return value is $ret"
這將產生以下結果:
$./test.sh
Hello World Zara Ali
Return value is 10
$
嵌套函數:
函數更有趣的功能之一是,他們可以調用本身以及調用其他函數。被稱為遞迴函式調用自身的函數。
經過簡單的例子示範了一個嵌套的兩個函數:
#!/bin/sh
# Calling one function from another
number_one () {
echo "This is the first function speaking..."
number_two
}
number_two () {
echo "This is now the second function speaking..."
}
# Calling function one.
number_one
這將產生以下結果:
This is the first function speaking...
This is now the second function speaking...
從提示的函數調用:
你可以把常用功能 .profile 的定義,這樣他們就會每當登入,在命令提示字元下,您可以使用它們。
或者,你可以在一個檔案中的定義分組為 test.sh,然後通過鍵入當前shell中執行該檔案:
$. test.sh
這樣做的效果造成任何test.sh內定義的函數,可以閱讀在如下定義為當前shell:
$ number_one
This is the first function speaking...
This is now the second function speaking...
$
要刪除從 shell 函數的定義,可以使用unset命令 .f 選項。這是相同的命令來刪除一個變數的定義Shell。
$unset .f function_name
所有的Unix命令來與一些可選的和強制性的選擇。忘記這些命令的完整文法,這是很常見。
因為沒有人能記得每一個UNIX命令和選項,一直提供線上協助,因為在Unix早期的時候。
Unix的版本的協助檔案,被稱為手冊頁。如果你知道任何命令的名字,但你不知道如何使用它,那麼手冊頁來協助你。 文法
下面是一個簡單的命令來獲得系統工作,而任何Unix命令的細節:
$man command
例子:
現在,你能想象的任何命令,你想要得到的協助。假設你想知道關於pwd ,那麼你只需要使用下面的命令:
$man pwd
上面的命令將開啟一個協助你會給你pwd命令的完整資訊。親自試一試在你的命令提示字元下,以獲得更多的細節
你可以得到完整的細節上man命令本身使用下面的命令:
$man man
手冊頁部分:
手冊頁一般分為部分,一般的man page作者偏好變化。下面是一些較常見的部分:
部分
描述
NAME
Name of the command
SYNOPSIS
General usage parameters of the command.
DESCRIPTION
Generally describes of the command and what it does
OPTIONS
Describes all the arguments or options to the command
SEE ALSO
Lists other commands that are directly related to the command in the man page or closely resembling its functionality.
BUGS
Explains any known issues or bugs that exist with the command or its output
EXAMPLES
Common usage examples that give the reader an idea of how the command can be used.
AUTHORS
The author of the man page/command.
最後,我要說的是手冊頁是一個重要的研究資源和第一途徑,當你需要在Unix系統資訊的命令或檔案。 有用的Shell命令:
現在你知道如何著手,連結後會給你一個最重要和最頻繁使用的Unix Shell命令列表。
如果你不知道如何使用的任何命令,然後使用手冊頁擷取有關命令的完整細節。
這裡是清單 shell - 有用的命令
from: http://www.yiibai.com/shell/what_is_shell.html#