Was ist der Unterschied zwischen () und {} in Bash zum Gruppieren von Ausgaben und Befehlen?

Was ist der Unterschied zwischen () und {} in Bash zum Gruppieren von Ausgaben und Befehlen?

Hier speist nur das zweite Echo das grep.

$ echo a1; echo a2 | grep -o a
a1
a

Dies ist hier bei beiden Echos der Fall.

$ { echo a1; echo a2 ;} | grep -o a
a
a

Hier auch.

$ (echo a1; echo a2 )| grep -o a
a
a

Was ist also der Unterschied zwischen () und {}?

Antwort1

Die runden Klammern leiten eine Unterschale ein.

$ a=1; { a=2 ; echo $a ; } ; echo $a
2
2
$ a=1; ( a=2 ; echo $a ; ) ; echo $a
2
1

Beachten Sie, dass $$dies in der Subshell gleich bleibt, da Bash nicht neu initialisiert werden muss. $BASHPIDÄnderungen sind jedoch möglich.

verwandte Informationen