반응형
"로컬"이 명령의 반환 코드를 스윕하는 이유는 무엇입니까?
이 Bash 스 니펫은 예상대로 작동합니다.
$ fun1() { x=$(false); echo "exit code: $?"; }
$ fun1
exit code: 1
그러나를 사용하는 이것은 다음을 local
수행하지 않습니다.
$ fun2() { local x=$(false); echo "exit code: $?"; }
$ fun2
exit code: 0
누구든지 local
명령의 반환 코드를 스윕 하는 이유를 설명 할 수 있습니까 ?
코드 local
가 0 을 반환 하는 이유는 $?
"가장 최근에 실행 된 포 그라운드 파이프 라인의 종료 상태로 확장" 하기 때문 입니다. 따라서 $?
성공을 돌려줍니다local
다음 과 같이 x
초기화에서의 선언을 분리하여이 동작을 수정할 수 있습니다 x
.
$ fun() { local x; x=$(false); echo "exit code: $?"; }; fun
exit code: 1
local
명령 의 리턴 코드는 다음 의 리턴 코드를가립니다.false
참조 URL : https://stackoverflow.com/questions/4421257/why-does-local-sweep-the-return-code-of-a-command
반응형
'code' 카테고리의 다른 글
Maven 프로젝트에 여러 부모가있을 수 있습니까? (0) | 2020.12.31 |
---|---|
공통 서브 모듈 (마스터 브랜치)에 대한 Git 커밋 (0) | 2020.12.31 |
상위 분기에서 현재 분기 업데이트 (0) | 2020.12.31 |
C # 7 튜플과 람다 (0) | 2020.12.31 |
함수 정의에 대한 질문 (매개 변수의 점 세 개 ..) (0) | 2020.12.31 |