有沒有辦法在shell腳本中包含另一個shell腳本以便能夠訪問其功能?如何將文件包含在bash shell腳本中
就像在PHP中一樣,您可以將include
指令與其他PHP文件一起使用,以便通過調用函數名稱來運行包含的函數。
有沒有辦法在shell腳本中包含另一個shell腳本以便能夠訪問其功能?如何將文件包含在bash shell腳本中
就像在PHP中一樣,您可以將include
指令與其他PHP文件一起使用,以便通過調用函數名稱來運行包含的函數。
簡單地把你的腳本中:
source FILE
或者
. FILE
這是同樣的事情。
$ LANG=C help source
source: source filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
請注意。是符合POSIX的,而源不是 –
但是這裏的源代碼並不完全像我們在'C'語言中做的那樣。這裏源代碼正在執行主腳本中的子腳本。如果我只想從子腳本中調用特定的函數呢? –
請勿混淆。 script.sh'與'。/ script.sh'。我失去了數小時試圖弄清楚發生了什麼 –
以上的答案是正確的,但如果在其他文件夾中運行腳本,會出現一些問題。
例如,a.sh
和b.sh
位於相同的文件夾中, a包括b包含. ./b.sh
。
將腳本運行出該文件夾時,例如使用xx/xx/xx/a.sh
時,將找不到文件b.sh
:./b.sh: No such file or directory
。
我用
. $(dirname "$0")/b.sh
[Bash的?:如何_best_包括其他腳本]的可能重複(http://stackoverflow.com/questions/192292/bash-how-best-to-include-other -scripts) – Troubadour
@Troubadour感謝您的參考。儘管這篇文章提到了「source」命令,但問題本身就是在詢問如何查明「source」文件的位置。 – Mechaflash
是的,但它足夠滿足您的需求。如果您搜索了「bash」和「include」(兩個詞在您自己的問題標題中),那麼您會在結果的頂部看到這一點,而不需要提出這樣一個基本問題。 – Troubadour