
目前,我透過將包含所有函數的函數文件獲取到使用它的幾個腳本中來實現此目的:
source ./functions.sh
我注意到的一個缺點是 bash 列印的語法錯誤行號不再是原始腳本的行號。
答案1
您使用它的方式是合理的。
我無法重現您的問題bash shell我可以使用(GNU bash,版本 4.1.2 和 GNU bash,版本 4.3.11)。請看下面:
測試腳本go.sh
。您可以./go.sh
在使其可執行後運行它chmod u+x go.sh
以及/bin/bash go.sh
echo " ### Here we start ###" Script line 1
source my_sourced_file
echo Script line 3
casfsda # this is the line 4 of script
echo Script line 5
f "Script line #6 using the function from sourced file"
echo " ### Here we finish ###" Script line 7
您必須將其包含的函數的檔案放入名為 的當前目錄中my_sourced_file
:
echo Hello word this is the 1 line of my_sourced_file
f(){ echo Hello $1 ;}
f "Gustave line number 3 of my_sourced_file"
echo linea 4 my_sourced_file
輸出(在黑色的錯誤)
### 這裡我們開始 ### 腳本第 1 行
Hello word 這是 my_sourced_file 的第 1 行
Hello Gustave my_sourced_file 的第 3 行
linea 4 my_sourced_file
腳本第 3 行
./go.sh:第 4 行:casfsda:找不到指令
腳本第 5 行
Hello 腳本第 #6 行使用來源檔案中的函數 ### 這裡我們完成 ### 腳本第 7 行
- 在 GNU bash 版本 4.3.11 上測試
- 以及舊版 GNU bash,版本 4.1.2