タグ付けされた質問 「bash-functions」

1
二重コロン「::」を含むBashスクリプト関数名
私は二重のコロンと関数名がある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]}" } …


3
sh(bashではなく)が.bashrcで定義された関数について不平を言うのはなぜですか?
ターミナルセッションを開くと、これが表示されます。 sh: `read.json 'の関数定義のインポートエラー sh: `ts-project 'の関数定義のインポートエラー shは次のように見えるため、これらの関数が好きではありません。 read.json(){ :: } そして ts-project(){ :: } 本当の質問は-なぜshこれらのファイルに触れる/解釈するのですか?私はMacOSを使用していて、以前にこれを見たことがあります。それはとても謎です。これらのファイルを読み込むのはbashだけだと思います。 更新:bashとshは普通のことではありません。ターミナルにbashと入力すると、次のようになります。 alex$ bash beginning to load .bashrc finished loading .bashrc bash-3.2$ shターミナルに入力すると、これが得られます: alex$ sh sh: error importing function definition for `read.json' sh: error importing function definition for `ts-project' sh-3.2$

4
bash関数での暗黙の戻り?
次のようなbash関数があるとします。 gmx(){ echo "foo"; } この関数は暗黙的にechoコマンドの終了値を返しますか、それともreturnを使用する必要がありますか? gmx(){ echo "foo"; return $? } 私はbashの動作方法を想定しています。bash関数の最後のコマンドの終了ステータスは「返される」ものですが、100%確実ではありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.