在Linux命令列執行指令碼中的函式
介紹
BASH (Bourne Again SHell) 是一個 Unix shell 和命令語言,經常用於 Linux 和其他類 Unix 作業系統。BASH 的一個有用特性是在指令碼檔案中建立和使用函式。函式是完成特定任務的程式碼塊,可以從指令碼內部或命令列執行。
先決條件
在開始之前,您需要:
一個帶有命令列介面(或 SSH 訪問許可權)的 Linux 系統。
包含要執行的函式的指令碼(您的自定義指令碼)。
執行指令碼所需的許可權(讀/寫/執行)。
本教程將向您展示如何在 Linux 系統的命令列中執行 BASH 指令碼中的函式。我們將首先建立一個包含函式的簡單 BASH 指令碼,然後演示如何從命令列呼叫該函式。
建立包含函式的 BASH 指令碼
首先,我們將建立一個包含一個簡單函式的 BASH 指令碼,該函式在終端上顯示一條訊息。開啟文字編輯器並建立一個名為“hello.sh”的新檔案,其中包含以下程式碼:
#!/bin/bash
# Define a function called "hello"
hello() {
echo "Hello, Earth!"
}
# Call the function
hello
儲存檔案並使用 **chmod** 命令使其可執行:
$ chmod +x hello.sh
現在,我們可以使用 ./ 字首和指令碼名稱來執行指令碼:
$ ./hello.sh Hello, Earth!
如您所見,指令碼執行並向終端列印訊息“Hello, Earth!”。
從命令列執行 bash 指令碼中的函式
要從命令列執行函式,我們需要使用 **bash -c** 命令,後跟指令碼檔名和函式名。
例如,要從 **hello.sh** 指令碼執行 hello 函式,可以使用以下命令:
$ bash -c "source hello.sh; hello" Hello, World!
或者,我們可以使用 .(點)命令來引用指令碼並呼叫函式
$ . hello.sh; hello Hello, World!
從 bash 指令碼執行函式時的高階操作
**向函式傳遞引數** - 您可以透過向函式傳遞引數來自定義函式的行為。例如,您可能想要建立一個函式,該函式以使用者名稱作為輸入並列印個性化問候。您可以使用變數(如 **$1, $2** 等)向 BASH 中的函式傳遞引數,這些變數分別表示傳遞給函式的第一個、第二個等引數。
**從函式返回值** - BASH 函式可以使用 return 命令返回值。例如,您可以建立一個函式來計算數字的平方並返回結果。**return** 命令後跟要返回的值,該值儲存在 **$?** 變數中,可以從呼叫指令碼或命令列訪問。
**除錯 BASH 函式** - 除錯 BASH 函式可能很困難,特別是對於剛接觸 BASH 指令碼的人來說。除錯函式的一種方法是使用 **set -x** 命令,該命令啟用指令碼的除錯輸出,並在執行每個命令之前列印該命令。您可以使用 **set +x** 命令關閉除錯輸出。其他工具(如 **bashdb** 或 **bashdbg**)提供了更高階的除錯功能,例如斷點和變數檢查。
執行帶有命令列引數的 Python 指令碼
要在命令列中執行指令碼中的函式,您需要指定指令碼名稱,後跟要執行的函式名稱。例如,如果您有一個名為 **myscript.py** 的指令碼,其中包含名為 **myFunction** 的函式,則可以像這樣從命令列執行該函式:$ python myscript.py myFunction
如果函式接受任何引數,則可以在函式名稱之後傳遞它們,引數之間用空格分隔。例如,如果函式接受兩個引數 arg1 和 arg2,則可以像這樣執行它:
$ python myscript.py myFunction arg1 arg2
這是一個包含一個接受兩個引數並列印其和的函式的示例指令碼:
# myscript.py def myfunction(arg1, arg2): print(arg1 + arg2) myfunction(1, 2)
要從命令列執行此函式,請使用以下命令:
$ python myscript.py myFunction 1 2
輸出結果為 3。
結論
本教程向您展示瞭如何在 Linux 系統的命令列中執行 BASH 指令碼中的函式。我們首先建立了一個包含函式的簡單 BASH 指令碼,然後演示瞭如何使用 **bash -c** 和 . 命令從命令列呼叫該函式。如果您有任何問題或意見,請在下面的評論部分留下您的留言。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP