Linux Shell系列教程之(十五) Shell函數簡介,linuxshell

來源:互聯網
上載者:User

Linux Shell系列教程之(十五) Shell函數簡介,linuxshell

本文是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-01demo(){            echo "這是我的第一個 shell 函數!"}echo "-----函數開始執行-----"demoecho "-----函數執行完畢-----"

說明: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-01function fSum(){        echo "入參為:"$1,$2        return $(($1+$2))}fSum 5 7total=$(fSum 3 2)echo "Return :"$total,$?

這個定義了一個計算參數和的函數,函數可以通過$1,$2這種形式來擷取入參值,然後通過$(($1+$2))這種形式來將兩值相加,並返回結果。

調用時,也可以通過括弧的形式來調用,Shell會調用單括弧裡面的命令。 因此,我們可以將shell中函數,看作是定義一個新的命令,它是命令,因此 各個輸入參數直接用 空格分隔。

輸出:

入參為:5,7Return :入參為: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大學

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.