Questo script dimostra la definizione di una funzione bash con parentesi versi con parentesi. Le parentesi hanno il piacevole effetto di creare variabili d'ambiente create nella funzione "locale", immagino perché il corpo della funzione viene eseguito come una sottoscheda. L'output è:Definizione del corpo della funzione bash utilizzando parentesi anziché controventi
A=something
A=
B=something
B=something
La domanda è se questa sintassi è consentita per la definizione di una funzione.
#!/bin/bash
foo() (
export A=something
echo A=$A
)
bar() {
export B=something
echo B=$B
}
foo
echo A=$A
bar
echo B=$B
indovina sbagliata. Queste variabili sembrano essere locali, perché questo [comando composto] (http://wiki.bash-hackers.org/syntax/basicgrammar#compound_commands) viene eseguito in un gruppo separato (contesto), NON una sottotitola !! – Florian
@Florian Bash e POSIX lo chiamano un "ambiente subshell", forse è quello che intendeva. Ma vero: non un nuovo processo. –