私は二重のコロンと関数名があるbashスクリプト今日出会った::
それらの中に、例えば、file::write()
とfile::read()
。Bashスクリプトでこの構文を見たことがないので、スクリプトを呼び出したときは正常に実行されました(驚いたことに)。
私のシステム(およびオンライン)でBashのmanページを精査した後、関数名のこの構文をサポートするドキュメントで何も見つかりません。たとえば、このセクションでShell Defined Functions
は、シェル関数の構文を次のように定義しています。
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.
関数名の二重コロン構文のどこにも言及はありません。
私がこれまでに見つけたこの二重コロン構文への唯一の他の参照は、このシェルスタイルガイド(サブセクションを参照Naming Conventions > Function Names
)にありますmypackage::myfunction()
。
この関数名の二重コロン構文はBashシェルの正当な機能ですか、それともおそらく文書化されていない機能ですか?合法である場合、Bashマニュアルのどこに記載されていますか?私は見て、見ましたが、マニュアルでそれについて何も見つけることができません。最も近いIましFOUNDはの使用である::
内PATH
検索パスに現在の作業ディレクトリを追加するための環境変数。
例
#!/bin/bash
function abc::def() {
echo "${FUNCNAME[0]}"
}
abc::def
このスクリプトを3つの異なるLinuxディストリビューションでテストし、3つすべてでスクリプトabc::def
をstdoutに出力しました。