Ten skrypt demonstruje definiowanie funkcji basha za pomocą nawiasów z nawiasami. Nawias ma ładny wpływ na tworzenie zmiennych środowiskowych utworzonych w funkcji "local", domyślnie , ponieważ treść funkcji jest wykonywana jako pod-powłokę. Dane wyjściowe to:Definiowanie bryły funkcji bash za pomocą nawiasów zamiast nawiasów klamrowych
A=something
A=
B=something
B=something
Pytanie brzmi, czy jest to dozwolona składnia do definiowania funkcji.
#!/bin/bash
foo() (
export A=something
echo A=$A
)
bar() {
export B=something
echo B=$B
}
foo
echo A=$A
bar
echo B=$B
złe przypuszczenie. Te zmienne wydają się być lokalne, ponieważ to polecenie [komenda złożona] (http://wiki.bash-hackers.org/syntax/basicgrammar#compound_commands) jest wykonywane w oddzielnej grupie (kontekście), a NIE w podpowłoce !! – Florian
@Florian Bash i POSIX nazywają to "środowiskiem podpowłoki", może to właśnie miał na myśli. Ale prawda: nie nowy proces. –