bash 서브 프로세스의 종료 상태


1

나는 경험적으로 이것을 발견했다.

# someCommand; echo $?
1
# bash -c someCommand; echo $?
0

항상 0 대신 bash -c someCommand종료 상태를 반환 할 것으로 기대합니다 someCommand.

이것은 버그입니까 아니면 디자인 기준 기능입니까? 원래 종료 상태를 쉽게 얻는 방법은 무엇입니까?


1
그것은 내가 본 행동이 아닙니다 : stderr과 stdout에서 bash -c 'grep abc 123'; echo $?반환합니다 . 어떤 bash 버전을 사용하고 있습니까? grep: 123: No such file or directory2
Eric

GNU bash, 버전 4.2.46 (1)-릴리스 (x86_64-redhat-linux-gnu) 사실입니다. 이전에 테스트 한 방법을 모르겠습니다.
david.perez

1
내 결과는 에릭의 @ 동의 : 그것은 않습니다 someCommand의 결과를 반환합니다. 예를 들어 bash -c 'curl http://nonexistent.tld/ &>/dev/null'; echo $?"6"을 인쇄합니다 (호스트를 확인할 수 없으면 상태 말림이 반환 됨). bash -c 'curl / &>/dev/null'; echo $?"3"(잘못된 형식의 URL 상태)을 인쇄합니다. 다른 경우 실행중인 특정 명령에 대해 다른 점이 있어야합니다.
Gordon Davisson

혼란을 드려 죄송합니다.
david.perez

답변:


0

이는의 bash명령이 아닌 명령 의 종료 상태를 얻기 때문 입니다 someCommand.

bash실행 someCommand하고 종료합니다. someCommand호출 한 bash 쉘이 종료되면 종료 상태 가 유실됩니다.


선언에 감사하지만 종료 상태를 얻는 방법은 무엇입니까?
david.perez
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.