このスクリプトは、括弧付きのbash関数と中括弧付きのbash関数の定義を示しています。括弧は、関数本体がサブシェルとして実行されるため、関数「ローカル」で作成された環境変数を作成するという優れた効果があります。出力は次のとおりです。
A=something
A=
B=something
B=something
問題は、これが関数を定義するための構文として許可されているかどうかです。
#!/bin/bash
foo() (
export A=something
echo A=$A
)
bar() {
export B=something
echo B=$B
}
foo
echo A=$A
bar
echo B=$B