bash shell函式的定義及變數的簡單說明
阿新 • • 發佈:2019-01-06
From: http://blog.sina.com.cn/s/blog_4ce3a68a0100i77a.html
函式:
“函式是一種指令碼內指令碼”,程式設計師很難想像沒有函式的日子,至少我會比較痛恨。
所以瞭解函式的定義也就是學習bash的一大要點了。
函式大大增強了shell的程式設計能力,主要原因有如下兩點:
- 當你呼叫一個函式時,它已經在shell的記憶體中;因此函式執行的很快。
- 將較長的shell指令碼組織成各種容易開發和維護的模組是理想的。
呃,針對第一點,現在計算機的記憶體那是相當的便宜,大家不用再擔心錢了吧?
來個4G的條子,當然用XP你就用3.5G吧,除非你擴充套件一下。。
定義一個函式,就是令shell在記憶體中儲存其名字和定義(也就是其包含的shell命令)。如果你要在以後執行函式,只須鍵入其名字,後跟任意引數即可,就好像它是一個shell指令碼
要定義一個函式有兩種格式
function functname{
shellcommands
}
和
functname(){
shellcommands
}
這倆方法,其實是一樣的,沒啥本質及功能上的區別。
unset -ffunctname使用unset -f functname刪除一個函式定義。
declare -f可以使用如下命令來查詢到登入會話裡定義的函式
嘿嘿,咋樣?是不是顯示的內容太長?嗯。用管道命令more來輸出吧
declare -f|more如果只想看函式名的話就用
declare -F除了優勢,函式和指令碼有兩個重要差別
- 當通過名字呼叫時,函式不在單獨程序裡執行,而指令碼卻可以。執行一個函式的語義更類似於登入時.bash_profile中的命令或用source命令呼叫指令碼時的情況。
- 如果一個函式與一個指令碼或可執行程式(也有可能是指令碼啊)有相同的名字,則函式優先。
看出來了吧?“函式優先”,為啥呢?這裡說一下在shell中鍵入一個命令時,各種資源的優先順序次序:
- 別名
- 關鍵字,例如function,以及if和for等
- 函式
- 內建命令,如cd和type等
- 指令碼和可執行程式(在最後哦),shell按在PATH環境變數中列出的目錄中對其進行搜尋
不過,呃,這個順序是可以改變的哈。可以使用內建的command builtin和enable改變優先順序次序。
它允許你將函式、別名和指令碼檔案定義為同樣的名字,並選擇要執行的一個。
變數:
呼,終於說到變量了。。嗯。沒事這個短。。
簡單地說:變數被命名用以儲存資料,通常格式為字串,其值可使用$符號加名字獲得。某些變數稱為環境變數,按慣例以大寫字母命名,其取值對子進行已知(使用export語句)
呵,就這些。嘿嘿。。因為後面的內容不能放在這一節裡了。太長了,呼呼。。
相關文章- shell vsunix( 9)之前已經寫過幾節關於shell的筆記了,可是卻一直沒有介紹一下,到底什麼是shell。呃,經過b...
- bashshell指令碼的執行方式( 9 )以下內容部分直接摘錄自《學習bash》,這又是我一個新的讀書筆記。希望能給大家帶來幫助。...
- shell變數語法詳解--兩種宣告變數方式,及大括號的作用( 4)貌似之前寫技術類部落格的做法不是很正確,嗯,一寫就一大長篇,就算真正有需要的人看也會煩...
- shell對[email protected]和$*進行引用( 2 )嘿,每次看到“$”符號我都會兩眼冒光,呵,沒辦法,在這鄙視“資本主義”社會呢。嗯。哈...
- shell命令替換之前介紹過shell有兩種方式可以取得變數的值:通過賦值語句,或者是以命令引數傳遞給指令碼。...