可以在不同的脚本中使用bash函数吗?

Her*_*ves 35 bash function

我有一个函数,我想引用和使用不同的脚本.有没有办法做到这一点?我不想为不同的脚本重写相同的功能.谢谢.

Dav*_*d Z 69

当然 - 在您希望使用该功能的脚本中,您可以编写类似的命令

source function.sh
Run Code Online (Sandbox Code Playgroud)

这相当于function.sh在运行命令的位置包含文件中的内容.注意,function.sh需要在其中一个目录中$PATH; 如果不是,则需要指定绝对路径.

  • 这是误导.这不会加载特定的功能,而是加载整个文件.另外,命名脚本"功能"是一个糟糕的想法. (5认同)
  • @Pithikos当然,我明确地说写`source function.sh`相当于在脚本中包含了文件的内容.我从未声称它会加载特定的功能.此外,`function.sh`是一个通用名称,如`example.com`; 我从来没有真正建议将它用作真实文件的名称. (4认同)
  • function.sh可以在PATH中的任何位置.如果bash处于posix模式,它将不会查看当前目录.这一点在手册页中进行了解释. (3认同)

pax*_*blo 11

是的,您可以将所有功能本地化为公共文件(或多个文件).这正是我对所有实用功能的处理.utility.shinc我的主目录中有一个我的所有程序使用的目录:

. $HOME/utility.shinc
Run Code Online (Sandbox Code Playgroud)

它在当前shell的上下文中执行脚本.这很重要 - 如果您只是运行include脚本,它将在子shell中运行,任何更改都不会传播到当前shell.

您可以为脚本组执行相同的操作.如果它是"产品"的一部分,我倾向于将所有脚本和任何包含的脚本放在一个shell目录中,以确保所有内容都已本地化.