shell函數(shù)介紹及使用

注:以下內(nèi)容借鑒于老男孩出版的shell編程實(shí)戰(zhàn)這個(gè)文檔編寫的。

網(wǎng)站建設(shè)、成都網(wǎng)站制作的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗(yàn)。成都創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見的多,溝通容易、能幫助客戶提出的運(yùn)營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇成都創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價(jià)值服務(wù)。


一、什么是函數(shù)?

在shell腳本中,函數(shù)類似Linux系統(tǒng)中的命令別名,可以簡化程序的代碼量,讓程序
更易讀、易改、易用。

簡單地說,函數(shù)的作用就是將程序里多次被調(diào)用的相同代碼組合起來(函數(shù)體),并為其取一個(gè)名字(即函數(shù)名),其他所有想重復(fù)調(diào)用這部分代碼的地方都只需要調(diào)用這個(gè)名字就可以了。當(dāng)需要修改這部分重復(fù)代碼時(shí),只需要改變函數(shù)體內(nèi)的一份代碼即可實(shí)現(xiàn)對所有調(diào)用的修改,也可以把函數(shù)獨(dú)立地寫到文件里,當(dāng)需要調(diào)用函數(shù)時(shí),再加載進(jìn)來使用。

使用shell函數(shù)的優(yōu)勢如下:

  • 把相同的程序段定義成函數(shù),可以減少整個(gè)程序的代碼量,提升開發(fā)效率;
  • 增加程序的可讀性、易讀性,提升管理效率;
  • 可以實(shí)現(xiàn)程序功能模塊化,使得程序具備通用性(可移植性)。

二、shell函數(shù)的語法

(1)標(biāo)準(zhǔn)寫法如下:

function 函數(shù)名() {       #推薦使用此格式,花括號里面寫入的就是要執(zhí)行的命令
    return n
}

(2)簡化寫法如下:

函數(shù)名() {                     #不用function的方法
    指令...
    return n
}

在shell函數(shù)的語法中,function表示聲明一個(gè)函數(shù),這部分可以省略不寫。

三、shell函數(shù)的執(zhí)行

shell的函數(shù)分為最基本的函數(shù)和可以傳參的函數(shù)兩種,其執(zhí)行方式分別如下:

(1)執(zhí)行不帶參數(shù)的函數(shù)時(shí),直接輸入函數(shù)名即可(注意不帶小括號),格式如下:

函數(shù)名

有關(guān)執(zhí)行函數(shù)的重要說明:

  • 執(zhí)行shell函數(shù)時(shí),函數(shù)名前的function和函數(shù)后的小括號都不要帶;
  • 函數(shù)的定義必須在要執(zhí)行的程序前面定義或加載;
  • shell執(zhí)行系統(tǒng)中各種程序的執(zhí)行順序?yàn)椋合到y(tǒng)別名→函數(shù)→系統(tǒng)命令→可執(zhí)行命令;
  • 函數(shù)執(zhí)行時(shí),會和調(diào)用它的腳本共用變量,也可以為函數(shù)設(shè)定局部變量及特殊位置參數(shù);
  • 在shell函數(shù)里面,return命令的功能和exit類似,return的作用是退出函數(shù),而exit是退出腳本;
  • return語句會返回一個(gè)退出值(即返回值)給調(diào)用函數(shù)的當(dāng)前程序,而exit會返回一個(gè)退出值(即返回值)給執(zhí)行程序的當(dāng)前shell;
  • 如果將函數(shù)存放在獨(dú)立的文件中,被腳本加載使用時(shí),需要使用source或“.”來加載。
  • 在函數(shù)內(nèi)一般使用local定義局部變量,這些變量離開函數(shù)后就會消失。

(2)帶參數(shù)的函數(shù)執(zhí)行方法,格式如下:

函數(shù)名 參數(shù)1 參數(shù)2

函數(shù)后面接參數(shù)的說明:

  • shell的位置參數(shù)($1、$2...、$#、$?及$@)都可以作為函數(shù)的參數(shù)來使用;
  • 此時(shí)父腳本的參數(shù)臨時(shí)地被函數(shù)參數(shù)所掩蓋或隱藏;
  • $0比較特殊,它仍然是父腳本的名稱;
  • 當(dāng)函數(shù)執(zhí)行完成時(shí),原來的命令行腳本的參數(shù)即可恢復(fù);
  • 函數(shù)的參數(shù)變量是在函數(shù)體里面定義的。

四、shell函數(shù)的基礎(chǔ)使用舉例

(1)示例1:

[root@localhost ~]# vim a.sh
#!/bin/bash
#以下是定義a和b兩個(gè)函數(shù)
function a(){
        echo "aaaaaaaaaaa"
}
function b(){
        echo "bbbbbbbbbbb"
}
b      #在腳本中執(zhí)行函數(shù)名以便調(diào)用函數(shù),這里先調(diào)用了函數(shù)b
a       #再調(diào)用函數(shù)a

[root@localhost ~]#  sh a.sh     #執(zhí)行結(jié)果如下
bbbbbbbbbbb
aaaaaaaaaaa

老男孩編寫的關(guān)于shell函數(shù)的內(nèi)容,只有兩個(gè)大的腳本沒有寫上來了,建議看原版文檔來了解shell,后面的內(nèi)容,我沒什么耐心寫了,可以在我博客置頂文章的末尾,下載原版文檔進(jìn)行學(xué)習(xí)。

當(dāng)前名稱:shell函數(shù)介紹及使用
文章地址:http://www.muchs.cn/article14/ghpdde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、微信公眾號、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)