bash函數(shù)的小技巧

這篇文章主要為大家展示了“bash函數(shù)的小技巧”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“bash函數(shù)的小技巧”這篇文章吧。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有黎平免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

bash函數(shù)的小技巧

關(guān)于bash函數(shù),這里有一些您不知道的東西。通常當(dāng)你寫(xiě)一個(gè)函數(shù)時(shí),你會(huì)這樣做:

function name () {
 ...
}

不是嗎?我知道你會(huì)這么做,因?yàn)檫@是所有人寫(xiě)函數(shù)的方式。這就是我要說(shuō)的。在bash中

{…}

并不像在JavaScript或c中那樣意味著“函數(shù)的主體”或“函數(shù)的范圍”,它實(shí)際上是一個(gè)復(fù)合命令。你可以做各種稀奇古怪的事情,比如:

function fileExists () [[ -f $1 ]]

不需要那些花括號(hào)!者你可以這樣做:

function isEven () (( $1 % 2 == 0 ))

這個(gè)函數(shù)是一個(gè)算術(shù)計(jì)算式?;蛘吣憧梢赃@樣做:

function name () (
 ...
)

這將在子shell中生成函數(shù),而不是在當(dāng)前環(huán)境中執(zhí)行。

或者您可以使用while, if, case, select和for。這里有一個(gè)例子:

function sleep1 () while :; do "$@"; sleep 1; done

這個(gè)函數(shù)將創(chuàng)建一個(gè)sleep1函數(shù),該函數(shù)將永遠(yuǎn)每秒運(yùn)行一個(gè)命令。您可以執(zhí)行類似sleep1 df -h這樣的操作來(lái)監(jiān)視磁盤的更改。

這些技巧不僅使您的代碼更美觀,還能夠讓您快速的寫(xiě)出單行bash程序,而且它們也非常有用。如果您需要為您的函數(shù)創(chuàng)建一個(gè)臨時(shí)環(huán)境,并臨時(shí)更改變量或shell選項(xiàng),那么它將特別有用。

這是我在代碼中找到的一個(gè)例子:

function caseInsensitiveMatch () (
 shopt -s nocasematch
 ....
)

在這里,函數(shù) caseInsensitiveMatch在一個(gè)子shell中執(zhí)行,它能設(shè)置nocasematch選項(xiàng),它的作用域就是這個(gè)函數(shù)。對(duì)于IFS和其他變量,您通常需要臨時(shí)更改。你這樣就不需要保存以前的值,然后恢復(fù)它們。

以上是“bash函數(shù)的小技巧”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前文章:bash函數(shù)的小技巧
文章URL:http://muchs.cn/article2/gpjpic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、云服務(wù)器、營(yíng)銷型網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、電子商務(wù)品牌網(wǎng)站設(shè)計(jì)

廣告

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

成都app開(kāi)發(fā)公司