為什麼要用shell函數?
簡單地說函數的作用就是把程式裡多次調用的相同的代碼 ,定義成一份,然後起個名字,所有的調用都是隻用這個名字就可以了。修改代碼時,隻需要改變函數體内的代碼即可。
優勢:
把相同的程式段定義成函數,可以節省程式代碼量
增加程式的可讀,易讀性
實作程式的功能子產品化
shell函數文法
簡單的文法:
函數名(){
指令...
return n
}
規範的文法:
function 函數名(){
return n
shell函數執行
調用函數:
1)直接執行函數名即可。注意,不要帶小括号。
函數名
注意:函數體必須再要執行的函數名的前面定義
2)帶參數的函數執行方法:
函數名 參數1 參數2
【函數帶參數的說明】
在函數體重位置參數{$1,$2,$3,$4,$5,$#,$*,$?以及$@}都是可以是函數的參數
父腳本的參數則臨時地被函數參數所掩蓋或隐藏
$0比較特殊,他仍然是父腳本的名稱
當函數完成時,原來的指令行參數會恢複
在shell函數裡面,return指令的功能與工作方式與exit相同,用于跳出函數
在shell函數體裡使用exit會終止整個shell腳本
return語句會傳回一個退出值給調用的程式
shell函數範例
範例1:開發腳本建立兩個簡單函數并調用執行
<code>#!/bin/bash</code>
<code>xcn( ) { </code><code>#定義函數</code>
<code>echo</code> <code>"i am xcn"</code>
<code>}</code>
<code>xcn </code><code>#調用函數</code>
<code>執行結果:</code>
<code>[root@XCN ~]</code><code># sh fun01.sh </code>
<code>i am xcn</code>
<code>xcn( ) {</code>
<code>echo</code> <code>"`xcn`"</code> <code>#列印函數</code>
範例2:使用行數及函數傳參,腳本傳參實作,對任意指定URL判斷異常
<code>function</code> <code>check_url( ){</code>
<code>curl -I -s $1|</code><code>head</code> <code>-1 && </code><code>return</code> <code>0||</code><code>return</code> <code>1</code>
<code>check_url $1</code>
<code>測試結果:</code>
<code>[root@XCN ~]</code><code># sh check_web_by_fun.sh baidu.com</code>
<code>HTTP</code><code>/1</code><code>.1 200 OK</code>
本文轉自 baishuchao 51CTO部落格,原文連結:http://blog.51cto.com/baishuchao/1942785