출력과 명령을 그룹화하기 위해 bash에서 ()와 {}의 차이점은 무엇입니까?

출력과 명령을 그룹화하기 위해 bash에서 ()와 {}의 차이점은 무엇입니까?

여기서는 두 번째 에코만 grep에 공급됩니다.

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

여기서는 두 에코 모두 그렇게 합니다.

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

여기에서도 마찬가지입니다.

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

그렇다면 ()와 {}의 차이점은 무엇인가요?

답변1

둥근 괄호는 서브쉘을 소개합니다.

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

$$bash를 다시 초기화할 필요가 없기 때문에 서브셸에서도 동일하게 유지됩니다 . $BASHPID하지만 변화는 있습니다.

관련 정보