關(guān)于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í)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
linux 分區(qū),格式化,掛載的命令詳細(xì)介紹
這篇文章主要介紹了linux 分區(qū),格式化,掛載的命令詳細(xì)介紹的相關(guān)資料,這里對命令進行了詳解并附簡單實例說明該如何實現(xiàn),需要的朋友可以參考下2016-11-11vscode遠(yuǎn)程免密登入Linux服務(wù)器的配置方法
這篇文章主要介紹了配置vscode遠(yuǎn)程免密登入Linux服務(wù)器的操作方法,主要包括windows端操作和linux服務(wù)端操作,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06Linux不丟失數(shù)據(jù)無損擴容分區(qū)操作命令實例
這篇文章主要介紹了Linux不丟失數(shù)據(jù)無損擴容分區(qū)操作命令實例,在實際操作前,請確保備份重要數(shù)據(jù),并確認(rèn)分區(qū)和文件系統(tǒng)的類型,因為不同的文件系統(tǒng)擴展方法會不同,如果是在線擴容,請確保沒有掛載使用該分區(qū)或者文件系統(tǒng)2024-06-06nacos在linux下啟動startup.sh報錯問題及解決
遇到Nacos啟動錯誤提示“Permission denied”,可通過執(zhí)行命令chmod u+x *.sh給予startup.sh執(zhí)行權(quán)限,解決權(quán)限問題,啟動成功,這是一種常見的解決Linux下腳本執(zhí)行權(quán)限問題的方法2023-03-03linux安裝jdk并設(shè)置環(huán)境變量的方法教程(看這一篇夠了)
這篇文章主要介紹了linux安裝jdk并設(shè)置環(huán)境變量的相關(guān)資料,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法
本篇文章主要介紹了使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03