如何在三个bash脚本之间提取公共代码?
我在三个不同的兄弟目录中有三个bash脚本 每一行的前几行都进行了一些设置,每一行之间有所不同 脚本的最后二十行左右是字符对字符相同的,处理和比较第一位中构造的文件 我想做的是把最后二十行放进去,比如说如何在三个bash脚本之间提取公共代码?,bash,scripting,Bash,Scripting,我在三个不同的兄弟目录中有三个bash脚本 每一行的前几行都进行了一些设置,每一行之间有所不同 脚本的最后二十行左右是字符对字符相同的,处理和比较第一位中构造的文件 我想做的是把最后二十行放进去,比如说。/common.bash,然后做类似的事情 #include "../common.bash" 在三个脚本中的每一个中,以避免每次我拨弄时必须在三个地方进行相同的更改 到目前为止,我最好的猜测是使用cat从四个道德上独立的片段中构造脚本 有更好的方法吗?使用源代码 source /path/
。/common.bash
,然后做类似的事情
#include "../common.bash"
在三个脚本中的每一个中,以避免每次我拨弄时必须在三个地方进行相同的更改
到目前为止,我最好的猜测是使用cat
从四个道德上独立的片段中构造脚本
有更好的方法吗?使用
源代码
source /path/to/common.bash
您不应该使用相对路径,因为它将被解释为相对于用户的工作目录,而不是脚本的位置。使用meld
source
可能是我想要的答案,但实际上在本例中,我发现最好使用meld
并排查看三个文件,并使用meld
传播最喜欢的更改
这样做的好处是,在处理一个文件时,我可以立即看到整个文件
但它无法扩展到不可避免的第四个副本,因此在这一点上,我将使用源代码,我猜。将公共方面转换为函数在脚本中定义它们,并将它们导出为export-f
,这样您就可以在其他脚本中重复使用它们,而不是包含为什么不将最后20行放在脚本中,然后在其他脚本的末尾运行或源代码?谢谢!那条路有点脏。有没有说“从这个文件的位置向上一个目录”?否则,每次移动/重命名/签出到错误的位置时,该对象都会损坏。您可以将其放入$PATH
中的目录中,并将其删除source
将搜索它。请参阅@JohnLawrenceAspden。/script
?@123,这将不起作用。它将从用户目录而不是脚本目录中上升。什么是meld
?