Bash関数の()構文の目的は何ですか?

Bash関数の()構文の目的は何ですか?

私の気分を爽やかにしています。強く打つ技術。私はこの言葉を使う技術私は長い間ゲームをしていなかったので、レビューの一環として次のコードを使って何かを書くことにしました。バッシュ/ジェニティ/ヤード。私はマニュアルページを読んで、有益なコミュニティを閲覧し、たくさんのYouTubeビデオを見ました。それから私のアートスタジオのためのギフト券を生成する簡単なナゲットを作りました。予想通り、zenityからユーザー入力を受け取り、クラウド内のテキストファイルにデータを追加します。シンプルでうまく動作します。しかし、その時私は私が使用できることを覚えていました機能Bashでは、コードを自由に移動できます。長すぎました。関数に引数を渡したかったのですが、構文を理解していないことに気づきました。

私が試したおおよその例は次のとおりです。

function foo (bar) {
    if [[ ${bar} -eq 1]]; then
        #do_something_here
        #return value_one_here
    else
        #do_something_else_here
        #return value_two_here
    fi 
} 
foo 3
newvar=$?
echo -e "${newvar}\n"

明らかに、パラメータをbash関数に渡すこの方法は構文上正しくありません。これでこれを正しく行う方法がわかりましたが、次の質問が発生します。関数宣言に()があるのはなぜですか? それでは()の中には何が入るのでしょうか? ()内にパラメータを含むスクリプトを見たことはありません。それでは、なぜ関数構文の一部ですか?ティア

答え1

標準関数定義に使用される構文は次のとおりです。

funcname() {
  cmds;
}

AT&Tは1984年にBourne Shellにこの機能を追加することにしました。

関数構文:

function funcname {
  cmds;
}

1983年頃から。これはAT&Tにもありましたが、David Kornのグループは修正されたBourne Shell生成の副作用としてBourne Shellにデータベース組み込みコマンドを追加する作業をしていましたkshksh

関連情報