本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程請看:Linux Shell系列教程 函數可以將一個複雜功能劃分成若幹模塊,從而使程式結構更加清晰,代碼重覆利用率更高。 高級語言都支持函數,Shell也不例外。今天就為大家介紹下Shell中函數相關用法。 一、She ...
本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程請看:Linux Shell系列教程
函數可以將一個複雜功能劃分成若幹模塊,從而使程式結構更加清晰,代碼重覆利用率更高。
高級語言都支持函數,Shell也不例外。今天就為大家介紹下Shell中函數相關用法。
一、Shell函數的語法
因為函數是腳本類語言,在執行時是逐行執行的,因此,Shell 函數必須先定義後使用。
Shell 函數的定義格式如下:
[ function ] funname [()] { command; [return int;] }
說明:function 關鍵詞是可選項,可加可不加。
大括弧內飾函數體,最後是返回值,可以加【return】關鍵詞來指定函數返回內容,如果不加,將以最後一條命令運行結果,作為返回值。 return後跟數值n(0-255)。
二、Shell函數使用舉例
接下來我們還是通過例子來學習下Shell函數的運用。
示例1:
#!/bin/bash # author:Linux大學 # url:www.linuxdaxue.com #date:2016-06-01 demo(){ echo "這是我的第一個 shell 函數!" } echo "-----函數開始執行-----" demo echo "-----函數執行完畢-----"
說明:demo是一個函數的定義,函數體只有一句:echo "這是我的第一個 shell 函數!"
然後通過函數名來調用函數。
程式輸出:
-----函數開始執行----- 這是我的第一個 shell 函數! -----函數執行完畢-----
這個例子並沒有體現函數的入參等使用,接下來給大家介紹下Shell中函數的傳參方法。
三、Shell函數參數處理
在Shell中,調用函數時可以向其傳遞參數。
在函數體內部,通過 $n 的形式來獲取參數的值,例如,$1表示第一個參數,$2表示第二個參數,$0代表腳本本身。
Shell函數參數處理例子
示例2:
我們再看一個例子:
#!/bin/sh #Author:Linux大學 #url:http://www.linuxdaxue.com #date:2016-06-01 function fSum() { echo "入參為:"$1,$2 return $(($1+$2)) } fSum 5 7 total=$(fSum 3 2) echo "Return :"$total,$?
這個定義了一個計算參數和的函數,函數可以通過$1,$2這種形式來獲取入參值,然後通過$(($1+$2))這種形式來將兩值相加,並返回結果。
調用時,也可以通過括弧的形式來調用,Shell會調用單括弧裡面的命令。 因此,我們可以將shell中函數,看作是定義一個新的命令,它是命令,因此 各個輸入參數直接用 空格分隔。
輸出:
入參為:5,7 Return :入參為:3,2,5
註意:
註意,$10 不能獲取第十個參數,獲取第十個參數需要${10}。當n>=10時,需要使用${n}來獲取參數。
函數中用到的特殊字元
另外,還有幾個特殊字元用來處理參數:
參數 | 說明 |
$# | 傳遞到腳本的參數個數 |
$* | 以一個單字元串顯示所有向腳本傳遞的參數 |
$$ | 腳本運行的當前進程ID號 |
$! | 後臺運行的最後一個進程的ID號 |
$@ | 與$*相同,但是使用時加引號,併在引號中返回每個參數。 |
$- | 顯示Shell使用的當前選項,與set命令功能相同。 |
$? | 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。 |
好了,有關Shell函數的相關知識先為大家介紹到這裡,Shell中的函數非常強大,在此不再展開講,希望大家能夠自己多多練習,熟練掌握。
更多Linux Shell教程請看:Linux Shell系列教程
- 版權聲明:本站原創文章,於3個月前,由Linux大學(Linuxdaxue.com)發表,共 1489字。
- 轉載請註明:Linux Shell系列教程之(十五) Shell函數簡介 | Linux大學