1
Bash脚本函数名称包含双冒号'::'
我今天遇到了一个Bash脚本,其中包含带有双冒号的函数名称::,例如file::write()和file::read()。我以前从未在Bash脚本中看到过这种语法,当我调用该脚本时,它运行得很好(令我惊讶)。 在系统上(和在线)上查看Bash的手册页后,我在文档中找不到支持此函数名语法的任何内容。例如,本节Shell Defined Functions将shell函数的语法定义为 function name [()] compound-command [redirection] 然后(在手册的其他地方)令牌name定义为 name A word consisting only of alphanumeric characters and underscores, and beginning with an alphabetic character or an underscore. Also referred to as an identifier. 没有任何提及函数名的双冒号语法。 到目前为止,我在此《Shell Style Guide》(请参阅小节Naming Conventions > Function Names)中找到了对此双冒号语法的唯一其他参考,该指南建议对“包”中的函数名使用双冒号语法-例如,mypackage::myfunction()。 函数名称的这种双冒号语法是Bash shell的合法功能,还是未公开的功能?如果合法,Bash手册中将其记录在哪里?我已经看了看,但是在手册中找不到任何有关它的信息。我发现最接近的是::在PATH环境变量中使用,将当前工作目录添加到搜索路径。 例 #!/bin/bash function abc::def() { …