欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年07月11日 14:14:05   作者:程序師  
這篇文章主要給大家介紹了關(guān)于bash函數(shù)你可能不知道的一些事情,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧


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

function name () {
 ...
}

不是嗎?我知道你會(huì)這么做,因?yàn)檫@是所有人寫函數(shù)的方式。這就是我要說的。在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這樣的操作來監(jiān)視磁盤的更改。

這些技巧不僅使您的代碼更美觀,還能夠讓您快速的寫出單行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ù)它們。

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

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

相關(guān)文章

  • VMware下CentOS 7 安裝圖文教程

    VMware下CentOS 7 安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了VMware下CentOS 7 安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • linux 分區(qū),格式化,掛載的命令詳細(xì)介紹

    linux 分區(qū),格式化,掛載的命令詳細(xì)介紹

    這篇文章主要介紹了linux 分區(qū),格式化,掛載的命令詳細(xì)介紹的相關(guān)資料,這里對(duì)命令進(jìn)行了詳解并附簡(jiǎn)單實(shí)例說明該如何實(shí)現(xiàn),需要的朋友可以參考下
    2016-11-11
  • 關(guān)于進(jìn)程間通信的Linux小程序

    關(guān)于進(jìn)程間通信的Linux小程序

    這篇文章主要為大家詳細(xì)介紹了一個(gè)關(guān)于進(jìn)程間通信的Linux小程序,主要利用共享內(nèi)存實(shí)現(xiàn)進(jìn)程間通信,使用管道實(shí)現(xiàn)進(jìn)程間競(jìng)爭(zhēng)關(guān)系,感興趣的朋友可以參考一下
    2016-05-05
  • vscode遠(yuǎn)程免密登入Linux服務(wù)器的配置方法

    vscode遠(yuǎn)程免密登入Linux服務(wù)器的配置方法

    這篇文章主要介紹了配置vscode遠(yuǎn)程免密登入Linux服務(wù)器的操作方法,主要包括windows端操作和linux服務(wù)端操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Linux不丟失數(shù)據(jù)無損擴(kuò)容分區(qū)操作命令實(shí)例

    Linux不丟失數(shù)據(jù)無損擴(kuò)容分區(qū)操作命令實(shí)例

    這篇文章主要介紹了Linux不丟失數(shù)據(jù)無損擴(kuò)容分區(qū)操作命令實(shí)例,在實(shí)際操作前,請(qǐng)確保備份重要數(shù)據(jù),并確認(rèn)分區(qū)和文件系統(tǒng)的類型,因?yàn)椴煌奈募到y(tǒng)擴(kuò)展方法會(huì)不同,如果是在線擴(kuò)容,請(qǐng)確保沒有掛載使用該分區(qū)或者文件系統(tǒng)
    2024-06-06
  • nacos在linux下啟動(dòng)startup.sh報(bào)錯(cuò)問題及解決

    nacos在linux下啟動(dòng)startup.sh報(bào)錯(cuò)問題及解決

    遇到Nacos啟動(dòng)錯(cuò)誤提示“Permission denied”,可通過執(zhí)行命令chmod u+x *.sh給予startup.sh執(zhí)行權(quán)限,解決權(quán)限問題,啟動(dòng)成功,這是一種常見的解決Linux下腳本執(zhí)行權(quán)限問題的方法
    2023-03-03
  • apache下支持asp.net的實(shí)現(xiàn)方法

    apache下支持asp.net的實(shí)現(xiàn)方法

    讓apache支持asp.net的設(shè)置步驟。
    2009-12-12
  • linux安裝jdk并設(shè)置環(huán)境變量的方法教程(看這一篇夠了)

    linux安裝jdk并設(shè)置環(huán)境變量的方法教程(看這一篇夠了)

    這篇文章主要介紹了linux安裝jdk并設(shè)置環(huán)境變量的相關(guān)資料,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python 虛擬環(huán)境安裝與卸載方法及遇到問題

    python 虛擬環(huán)境安裝與卸載方法及遇到問題

    這篇文章主要介紹了python 虛擬環(huán)境安裝與卸載方法及遇到問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法

    使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法

    本篇文章主要介紹了使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03

最新評(píng)論