Bash 스크립트에 다음이 있습니다.
(
set -o pipefail
echo "foobar" | bash
set +o pipefail
)
파이프라인 실패 설정을 재설정해야 합니까, 아니면 해당 줄을 생략할 수 있습니까? 즉, 하위 쉘의 파이프 실패 설정이 상위 쉘에 영향을 줍니까?
따라서 이는 다음과 같이 가정한다는 의미입니다.
(
set -o pipefail
echo "foobar" | bash
)
위의 내용과 정말 다르지 않나요?
답변1
인용하다매뉴얼 페이지:
서브쉘 환경에 대한 변경은 쉘의 실행 환경에 영향을 주지 않습니다.
사례를 쉽게 테스트할 수 있습니다.
$ set +o pipefail
$ (set -o pipefail)
$ shopt -o pipefail
pipefail off