我目前通过将包含所有函数的函数文件放入使用它的几个脚本中来实现此目的:
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 行
你好 脚本第 6 行 使用源文件中的函数 ### 我们完成了 ### 脚本第 7 行
- 在 GNU bash 版本 4.3.11 上测试
- 以及旧版 GNU bash,版本 4.1.2