是否可以获取bash脚本以加载其功能而不执行该脚本?

时间:2020-08-07 12:25:02

标签: bash shell cygwin

我有2个bash脚本:

script1.sh
script2.sh

script1.sh

command1
func1(){
}

command2
func2(){
}

我想从script2.sh中获取script1.sh,以便仅加载func1()和func2()而不在之前或之后运行命令。

有办法吗?

1 个答案:

答案 0 :(得分:0)

Jiri Valenta是100%正确的,他们执行此操作的最佳方法是将所有scrip1.sh函数移动到一个单独的文件中,例如,

script1_functions.sh # move all functions from script1.sh to here
script1.sh # sources script1_functions.sh and executes commands
script2.sh # sources script1_functions.sh and executes other commands

但是,如果script1.sh在您的控制范围之外(例如,供应商代码),该怎么办。在这种情况下,将函数复制粘贴到script2.sh中似乎是一个好主意。但是,将来可能会修改script1.sh(一个安全的假设),并且您可能希望script2.sh自动使用修改后的功能。

但是IMO,解决此问题比解决此类问题更有效。这是一个这种不值得解决的解决方案的示例:获取当前script1.sh的md5sum,并在script2.sh的开头验证它是否相同。如果没有,请发出警告或错误(可能会中止script2.sh),表明script1.sh已更改,因此有人需要查看更改并更新script2.sh代码,或者更新script2.sh的script1.sh的md5sum(如果有代码)审查确定不需要更改。

相关问题