這篇文章主要為大家展示了“bash函數(shù)的小技巧”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“bash函數(shù)的小技巧”這篇文章吧。
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、東洲網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為東洲等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。關(guān)于bash函數(shù),這里有一些您不知道的東西。通常當(dāng)你寫一個函數(shù)時,你會這樣做:
function name () { ... }
不是嗎?我知道你會這么做,因為這是所有人寫函數(shù)的方式。這就是我要說的。在bash中
{…}
并不像在JavaScript或c中那樣意味著“函數(shù)的主體”或“函數(shù)的范圍”,它實際上是一個復(fù)合命令。你可以做各種稀奇古怪的事情,比如:
function fileExists () [[ -f $1 ]]
不需要那些花括號!者你可以這樣做:
function isEven () (( $1 % 2 == 0 ))
這個函數(shù)是一個算術(shù)計算式?;蛘吣憧梢赃@樣做:
function name () ( ... )
這將在子shell中生成函數(shù),而不是在當(dāng)前環(huán)境中執(zhí)行。
或者您可以使用while, if, case, select和for。這里有一個例子:
function sleep1 () while :; do "$@"; sleep 1; done
這個函數(shù)將創(chuàng)建一個sleep1函數(shù),該函數(shù)將永遠(yuǎn)每秒運(yùn)行一個命令。您可以執(zhí)行類似sleep1 df -h
這樣的操作來監(jiān)視磁盤的更改。
這些技巧不僅使您的代碼更美觀,還能夠讓您快速的寫出單行bash程序,而且它們也非常有用。如果您需要為您的函數(shù)創(chuàng)建一個臨時環(huán)境,并臨時更改變量或shell選項,那么它將特別有用。
這是我在代碼中找到的一個例子:
function caseInsensitiveMatch () ( shopt -s nocasematch .... )
在這里,函數(shù) caseInsensitiveMatch在一個子shell中執(zhí)行,它能設(shè)置nocasematch選項,它的作用域就是這個函數(shù)。對于IFS和其他變量,您通常需要臨時更改。你這樣就不需要保存以前的值,然后恢復(fù)它們。
以上是“bash函數(shù)的小技巧”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。