如何編寫和使用自定義的Shell函式和函式庫

2021-03-04 08:49:22 字數 1840 閱讀 9502

1樓:匿名使用者

乙個 shell 函式 就是在指令碼中能夠完成特定任務的一組命令。它們的工作原理與其他程式語言中的過程(譯註:可能指的是類似 sql 中的儲存過程之類的吧)、子例程、函式類似。

編寫乙個函式的語法如下:

函式名()

(校注:在函式名前可以加上 function 關鍵字,但也可省略不寫)

例如,你可以像下面那樣在乙個指令碼中寫乙個用來顯示日期的函式:

showdate()

每當你需要顯示日期時,只需呼叫該函式的函式名即可:

$ showdate

簡單來說 shell 函式庫也是乙個 shell 指令碼,不過你可以在乙個函式庫中僅儲存其它 shell 指令碼中需要呼叫的函式。

下面展示的是在我的 ~/lib/sh 目錄下乙個名為 libmyfuncs.sh 的庫函式:

#!/bin/bash

### function to clearly list directories in path

showpath()

### function to show logged user

showusers()

### print a user』s details

printuserdets()

儲存檔案並且給指令碼新增執行許可權。

如何從函式庫中呼叫函式

要使用某個 lib 目錄下的函式,首先你需要按照下面的形式 將包含該函式的函式庫匯入到需要執行的 shell 指令碼中:

$ . /path/to/lib

或$ source /path/to/lib

(譯註:第一行的 . 和路徑間必須是有空格的)

這樣你就可以像下面演示的那樣,在其它的指令碼中使用來自 ~/lib/sh/libmyfuncs.sh 的 printuserdets 函式了。

在下面的指令碼中,如果要列印出某個特定使用者的詳細資訊,你不必再一一編寫**,而只需要簡單地呼叫已存在的函式即可。

建立乙個名為 test.sh 的新檔案:

#!/bin/bash

### include lib

. ~/lib/sh/libmyfuncs.sh

### use function from lib

printuserdets

### exit script

exit 0

儲存這個檔案,並使得這個指令碼可被執行,然後執行它:

$ chmod 755 test.sh

$ ./test.sh

shell中怎麼宣告乙個函式?

2樓:怕不他啊不了

shell宣告乙個函式,只需要鍵入以下語法:

function_name ()

shell之 函式(function)

函式在指令碼中出現的次序是任意的,會按照指令碼呼叫次序依次執行函式。shell函式通過return返回函式退出狀態,0表示無錯誤,1表示有錯誤,所以shell函式中的返回值需要使用echo標準輸出或者全域性變數。

1、函式傳入引數

2、函式通過全域性變數返回值

3、函式通過echo返回值

4、函式相互呼叫

5、乙個函式呼叫多個函式

shell指令碼裡的乙個自定義函式 求詳細解釋

3樓:我是幸福的懶豬

$@表示所有這些引數都分別被雙引號引住,若乙個指令碼接收到兩個引數,$@等價於$1$2

$#表示提供給指令碼的引數號

eval可讀取一連串的引數,然後再依引數本身的特性來執行eval cd "\"\$$#\"" 會先解釋$#,比如你引數數量為3,則下次解釋為cd $3

C自定義web控制項編寫

參考一下 在頁面引用就可以 這只是簡單的自定義控制項 namespace myservercontrol servercontrol1 runat server 自定義伺服器控制項在頁面上面顯示的標記 public class servercontrol1 webcontrol set privat...

生活自定義近義詞,自定義的同義詞

生活,近義詞 存在,生存,生涯,光景,生計,餬口 生活 死亡 自定義 死規定 自定義的同義詞 adj.冷淡的,冷漠的 unfriendlyadj.外表 舉止等 酷的 fashionableadj.涼爽的 coldadj.優秀的,極好的 goodadj.冷靜的,沉著的,從容的 calm 翻譯為寒冷的同...

WPS自動篩選自定義中的包含功能如何使用

當wps 執行自動篩選行時,您可以對清單子集進行編輯 設定格式 製作圖表和列印,不必考慮行位置的排列或移動。一次只能對工作表中的乙個資料清單使用自動篩選命令。自動篩選的具體操作步驟如下 1 選中需要篩選的單元格區域。2 在 資料 選單上選擇 篩選 選擇 自動篩選 3 可以使用自定義篩選 在篩選完資料...