国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務(wù)器 > Web服務(wù)器 > 正文

關(guān)于bash函數(shù)你可能不知道的一些事情(譯)

2024-09-01 13:55:19
字體:
供稿:網(wǎng)友

bash函數(shù)

關(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)每秒運行一個命令。您可以執(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ù)它們。

這是我5分鐘的技巧。你可以在bash man頁面中查找復(fù)合命令,哪里有所有可能的用法。一旦掌握了這一點,您將開始編寫一些next級別shell代碼。下次見!

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網(wǎng)的支持。

英文原文:Something you didn't know about functions in bash


注:相關(guān)教程知識閱讀請移步到服務(wù)器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石棉县| 大石桥市| 岑巩县| 罗甸县| 永济市| 喜德县| 平遥县| 集安市| 中超| 屯门区| 泰宁县| 中卫市| 日土县| 沿河| 西城区| 湖南省| 青州市| 菏泽市| 柳河县| 华容县| 汽车| 徐汇区| 汉源县| 观塘区| 内江市| 霍城县| 抚松县| 大同市| 柘城县| 巧家县| 紫金县| 盐山县| 泾川县| 夹江县| 长宁区| 廉江市| 东乡| 渝中区| 普陀区| 潢川县| 永康市|