注:以下內(nèi)容借鑒于老男孩出版的shell編程實戰(zhàn)這個文檔編寫的。
網(wǎng)站建設(shè)、成都網(wǎng)站制作的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗。成都創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇成都創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價值服務(wù)。
在shell腳本中,函數(shù)類似Linux系統(tǒng)中的命令別名,可以簡化程序的代碼量,讓程序
更易讀、易改、易用。
簡單地說,函數(shù)的作用就是將程序里多次被調(diào)用的相同代碼組合起來(函數(shù)體),并為其取一個名字(即函數(shù)名),其他所有想重復(fù)調(diào)用這部分代碼的地方都只需要調(diào)用這個名字就可以了。當需要修改這部分重復(fù)代碼時,只需要改變函數(shù)體內(nèi)的一份代碼即可實現(xiàn)對所有調(diào)用的修改,也可以把函數(shù)獨立地寫到文件里,當需要調(diào)用函數(shù)時,再加載進來使用。
使用shell函數(shù)的優(yōu)勢如下:
- 把相同的程序段定義成函數(shù),可以減少整個程序的代碼量,提升開發(fā)效率;
- 增加程序的可讀性、易讀性,提升管理效率;
- 可以實現(xiàn)程序功能模塊化,使得程序具備通用性(可移植性)。
(1)標準寫法如下:
function 函數(shù)名() { #推薦使用此格式,花括號里面寫入的就是要執(zhí)行的命令
return n
}
(2)簡化寫法如下:
函數(shù)名() { #不用function的方法
指令...
return n
}
在shell函數(shù)的語法中,function表示聲明一個函數(shù),這部分可以省略不寫。
shell的函數(shù)分為最基本的函數(shù)和可以傳參的函數(shù)兩種,其執(zhí)行方式分別如下:
(1)執(zhí)行不帶參數(shù)的函數(shù)時,直接輸入函數(shù)名即可(注意不帶小括號),格式如下:
函數(shù)名
有關(guān)執(zhí)行函數(shù)的重要說明:
- 執(zhí)行shell函數(shù)時,函數(shù)名前的function和函數(shù)后的小括號都不要帶;
- 函數(shù)的定義必須在要執(zhí)行的程序前面定義或加載;
- shell執(zhí)行系統(tǒng)中各種程序的執(zhí)行順序為:系統(tǒng)別名→函數(shù)→系統(tǒng)命令→可執(zhí)行命令;
- 函數(shù)執(zhí)行時,會和調(diào)用它的腳本共用變量,也可以為函數(shù)設(shè)定局部變量及特殊位置參數(shù);
- 在shell函數(shù)里面,return命令的功能和exit類似,return的作用是退出函數(shù),而exit是退出腳本;
- return語句會返回一個退出值(即返回值)給調(diào)用函數(shù)的當前程序,而exit會返回一個退出值(即返回值)給執(zhí)行程序的當前shell;
- 如果將函數(shù)存放在獨立的文件中,被腳本加載使用時,需要使用source或“.”來加載。
- 在函數(shù)內(nèi)一般使用local定義局部變量,這些變量離開函數(shù)后就會消失。
(2)帶參數(shù)的函數(shù)執(zhí)行方法,格式如下:
函數(shù)名 參數(shù)1 參數(shù)2
函數(shù)后面接參數(shù)的說明:
(1)示例1:
[root@localhost ~]# vim a.sh
#!/bin/bash
#以下是定義a和b兩個函數(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)容,只有兩個大的腳本沒有寫上來了,建議看原版文檔來了解shell,后面的內(nèi)容,我沒什么耐心寫了,可以在我博客置頂文章的末尾,下載原版文檔進行學(xué)習(xí)。